我对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”
我很难过......有人吗?
编辑:有谁知道我可以在哪里调试这个?答案 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'
可能会有所帮助