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

Sig*_*Sig 4 initialization ruby-on-rails-3.2

我正在开发一个Rails(3.2)应用程序,我需要在应用程序启动时执行一些任务.

由于我想将逻辑保存在一个单独的文件中,我还创建了一个看起来像的lib/helinium.rb(使用虚拟运行方法)

class Helinium
  def self.run
    puts "running ...."
  end
end
Run Code Online (Sandbox Code Playgroud)

我创建了一个简单的初始化文件config/initializers/perform_checks.rb

Helinium.run
Run Code Online (Sandbox Code Playgroud)

一切似乎都很好.现在我希望将Helinium类放在一个模块中,这样两个文件分别看起来像

module Elemens
  class Helinium
      def self.run
        puts "running ...."
      end
  end
end
Run Code Online (Sandbox Code Playgroud)

Elemens::Helinium.run
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动应用程序时,我得到了

未初始化的常量Elemens(NameError)

我在这里错过了什么吗?为什么找不到模块?

感谢,并有一个愉快的一天.

dee*_*ame 7

说明

这有关于自动加载如何在Rails中工作的事情.

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

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

固定

要解决您的问题,您可以

require 'lib/helinium'
Run Code Online (Sandbox Code Playgroud)

要么

把类放到一个名为的文件夹中 lib\elemens