2010-01-12 54 views
7

我有一个关于在lib目录定义的模块一个令人费解的问题Rails的LIB包括

我有两个文件

#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

愚蠢的问题,但你重新启动服务器?如果没有重新启动流程修复它? – 2010-01-12 11:53:03

+0

是我尝试重新启动。服务器无法启动后。 – stellard 2010-01-12 19:33:37

回答

5

在你的ApplicationController文件的顶部可能有助于

+2

试过这一个,这就是我得到的 没有这样的文件加载 - lib/test_module(MissingSourceFile) – stellard 2010-01-12 19:32:39

+2

你确定该文件是在正确的位置?由于要求声明无法找到它... – Veger 2010-01-12 22:39:48

+1

我确信它是在正确的地方,但我再次检查再次。出于某种原因,文件名是test_module.r?b。这很奇怪,因为它显示在TextMate(我创建文件的位置)为.rb。我重命名了这个文件,它工作。感谢您在这方面的时间,我非常困惑,我需要另一套眼睛。 – stellard 2010-01-13 00:57:09

20

铁轨3的添加require 'lib/test_module',请务必将lib目录添加到config.autoload_pathsconfig/application.rb,使得包含你的模块文件被读取并加载模块。

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

关于这一点,并装载子目录的更多信息看here

此外,supposedly你不应该使用要求一个Rails应用程序中,因为它可以防止的ActiveSupport ::依赖从(联合国)加载代码正确”。