我正在开发一个Rails(3.2)应用程序,我需要在应用程序启动时执行一些任务。
由于我想将逻辑保存在一个单独的文件中,我还创建了一个看起来像的lib / helinium.rb(使用虚拟运行方法)
class Helinium
def self.run
puts "running ...."
end
end
我创建了一个简单的初始化文件config / initializers / perform_checks.rb
Helinium.run
一切似乎都很好。 现在我希望将Helinium类放在一个模块中,这样两个文件分别看起来像
module Elemens
class Helinium
def self.run
puts "running ...."
end
end
end
和
Elemens::Helinium.run
但是当我尝试启动应用程序时,我得到了
未初始化的常量Elemens(NameError)
我在这里遗漏了什么吗?为什么找不到该模块?
谢谢你,祝你有个愉快的一天。
答案 0 :(得分:7)
这可以解决自动加载在Rails中的工作原理。
Rails不会自动要求/ lib下的所有内容。它只在您尝试使用与lib中的文件名匹配的新类名时自动加载。
您可以查看此帖子了解更多信息:
https://stackoverflow.com/a/9819938/1188913
要解决您的问题,您可以
require 'lib/helinium'
OR
将该类放入名为lib\elemens