Rails lib包括

关于lib目录中定义的模块,我有一个令人费解的问题

我有两个文件

#lib/authentication.rb module Authentication end #lib/test_module.rb module TestModule end 

在我的应用程序控制器中我有

  class ApplicationController < ActionController::Base include Authentication include TestModule end 

身份validation模块正确加载但TestModule没有

我得到“未初始化的常量ApplicationController :: TestModule”

我很难过……有人吗?

编辑:有谁知道我可以在哪里调试这个?

在ApplicationController文件的顶部添加require 'lib/test_module'可能会有所帮助

从Rails 3开始,确保将lib目录添加到config/application.rb config.autoload_paths ,以便读取包含模块的文件并加载模块。

 config.autoload_paths += %W(#{config.root}/lib) 

在这里查看有关这方面的更多信息并加载子目录。

另外, 据说 “ 你不应该在rails应用程序中使用require ,因为它可以防止[un]正确加载该代码的ActiveSupport :: Dependencies”。