Rails不会从lib加载我的模块

时间:2012-11-02 20:35:59

标签: ruby-on-rails ruby ruby-on-rails-3 module

我在lib文件夹中的Rails 3.2应用程序中有一堆自定义类:即扩展ActiveRecord等。一切正常。

但是我正在尝试向FileUtils添加一些自定义方法,即

module FileUtils
  def last_modified_file(path='.')
     # blah ...    
  end
end

我把它放在lib / file_utils.rb中 在我的application.rb中我有

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

我的其他自定义分类已加载但未加载模块。

我读了(Best way to load module/class from lib folder in Rails 3?)我应该在模块内部定义一个类,以便Rails根据FileUtils.class来获取它 - 它应该是Object< BasicObject。

所以我试过

module FileUtils
  class Object 
    def last_modified_file(path='.')
       # blah ...    
    end
  end
end

但这也不起作用。

然而,当我启动irb并粘贴我的代码时,我的代码有效地将我的新代码放入对象并重新包含我的模块 - 它工作正常。

What amd我在这里失踪了吗?

1 个答案:

答案 0 :(得分:11)

您的补丁永远不会被加载,因为只有在Rails找不到常量时才会调用自动加载。由于FileUtils常量已存在,因此永远不会调用自动加载器,并且永远不会加载您的文件。

只需从初始化程序中获取它。

require File.join(Rails.root, "lib/file_utils.rb")