Ruby on rails Rails库包括
关于lib目录中定义的模块,我有一个令人费解的问题 我有两个文件Ruby on rails Rails库包括,ruby-on-rails,include,Ruby On Rails,Include,关于lib目录中定义的模块,我有一个令人费解的问题 我有两个文件 #lib/authentication.rb module Authentication end #lib/test_module.rb module TestModule end 在我的应用程序控制器中,我有 class ApplicationController < ActionController::Base include Authentication include TestMo
#lib/authentication.rb
module Authentication
end
#lib/test_module.rb
module TestModule
end
在我的应用程序控制器中,我有
class ApplicationController < ActionController::Base
include Authentication
include TestModule
end
class ApplicationController
身份验证模块正确加载,但TestModule未正确加载
我得到“未初始化的常量ApplicationController::TestModule”
我被难住了。。。有人吗
编辑:有人知道我可以在哪里调试这个吗?在应用程序控制器文件的顶部添加
require'lib/test\u module'
可能会有所帮助从Rails 3开始,确保将lib
目录添加到config/application.rb
中的config.autoload\u路径中,以便读取包含模块的文件并加载模块
config.autoload_paths += %W(#{config.root}/lib)
查找有关此和加载子目录的更多信息
另外,“您不应该在rails应用程序中使用require,因为它会阻止ActiveSupport::Dependencies正确地[un]加载该代码。”愚蠢的问题,但您是否重新启动了服务器?如果没有,重新启动进程是否解决了问题?是的,我尝试过重新启动。服务器在之后无法启动。尝试了那个,这就是我没有得到要加载的文件的原因--lib/test_模块(MissingSourceFile)你确定文件在正确的位置吗??因为require语句找不到它…我确信它在正确的位置,但我再次检查了一遍。出于某种原因,文件名为test_module.r?b。这很奇怪,因为它在TextMate(我创建文件的地方)中显示为.rb。我重新命名了这个文件,它成功了。谢谢你花时间在这件事上,我太困惑了,需要再看一眼。