Rails lib包括

时间:2010-01-12 11:28:38

标签: ruby-on-rails include

我对lib dir中定义的模块有一个令人费解的问题

我有两个文件

#lib/authentication.rb

module Authentication

end


#lib/test_module.rb

module TestModule

end

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

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

验证模块正确加载但TestModule不加载

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

我很难过......有人吗?

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

2 个答案:

答案 0 :(得分:21)

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

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

查看here以获取有关此内容和加载子目录的更多信息。

此外,supposedly您不应在rails应用中使用require ,因为它会阻止ActiveSupport :: Dependencies [un]正确加载该代码”。

答案 1 :(得分:5)

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