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”。