Ruby on rails 3.2 在自定义初始值设定项中使用模块时未初始化的常量

Ruby on rails 3.2 在自定义初始值设定项中使用模块时未初始化的常量,ruby-on-rails-3.2,initialization,Ruby On Rails 3.2,Initialization,我正在使用Rails(3.2)应用程序,需要在应用程序启动时执行一些任务 因为我想将逻辑保存在一个单独的文件中,所以我还创建了lib/helinium.rb,它看起来像(使用dummy run方法) 我创建了一个简单的初始化文件config/initializers/perform_checks.rb Helinium.run 一切似乎都很好。 现在,我希望将Helinium类放在一个模块中,使这两个文件分别如下所示 module Elemens class Helinium

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

因为我想将逻辑保存在一个单独的文件中,所以我还创建了lib/helinium.rb,它看起来像(使用dummy run方法)

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

Helinium.run
一切似乎都很好。 现在,我希望将Helinium类放在一个模块中,使这两个文件分别如下所示

module Elemens
  class Helinium
      def self.run
        puts "running ...."
      end
  end
end

但当我尝试启动应用程序时,我发现

未初始化常量元素(名称错误)

我是不是遗漏了什么?为什么找不到模块

谢谢,祝你今天愉快。

解释 这与Rails中自动加载的工作方式有关

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

您可以查看此帖子以了解更多信息:

修理 要解决您的问题,您可以

require 'lib/helinium'


把这个类放到一个名为
lib\elemens

的文件夹中,谢谢。我想在application.rb中添加下面的行就足够了,但实际上不行。config.autoload_paths+=%W(#{config.root}/lib)它实际上取决于类的名称和放置位置。你也可以把这个类放在一个“elemens”文件夹中使它工作。所以如果我有lib/elemens/helinium.rb,我不需要这个文件。谢谢您的回复如果我再次打扰您,很抱歉,但是有没有办法确保我的初始值设定项作为引导期间的最后一个操作执行?我需要知道可用的型号。我调用ActiveRecord::Base.subjects,但它返回一个空数组。再次感谢。别担心,也许这是一个新问题?如果答案解决了你的问题,请随意接受
Elemens::Helinium.run
require 'lib/helinium'