在自定义初始化程序中使用模块时未初始化的常量

时间:2013-03-15 07:12:13

标签: ruby-on-rails-3.2 initialization

我正在开发一个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)

我在这里遗漏了什么吗?为什么找不到该模块?

谢谢你,祝你有个愉快的一天。

1 个答案:

答案 0 :(得分:7)

解释

这可以解决自动加载在Rails中的工作原理。

Rails不会自动要求/ lib下的所有内容。它只在您尝试使用与lib中的文件名匹配的新类名时自动加载。

您可以查看此帖子了解更多信息:
https://stackoverflow.com/a/9819938/1188913

修复

要解决您的问题,您可以

require 'lib/helinium'

OR

将该类放入名为lib\elemens

的文件夹中