autoload_paths更改命名约定

时间:2012-04-12 00:52:56

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

我在使用Rails用于加载config.autoload_paths文件的命名约定时遇到问题。

我正在构建一个使用一组宝石的应用程序。

这组宝石应该由应用程序扩展,如果在gem中定义了模型User,那么如果应用程序想要扩展该模型,则必须创建一个文件命名为"app/models/_user.rb",在该文件中,您将编写如下内容:

# Extending gems user model in the application level
class User < ActiveRecord::Base
  def new_method_that_make_sense_for_my_app
    #supercode here... bla bla
  end
end

因此,考虑到这种情况,我们假设这不会改变。因此,我必须将此类文件添加到config.autoload_paths数组中,这样我就可以对代码进行更改并应用它们而无需重新启动服务器(在开发环境中)。

问题在于:

如果我将以下代码添加到我的application.rb:

config.autoload_paths += %W(#{config.root}/app/models/_user.rb)

Rails不会在每个请求上自动加载此文件,因为autoload_paths元素依赖于以下约定:文件的名称等同于类的名称在该文件中定义。

所以,恢复:"_user.rb"文件名中的下划线会搞乱一切!

有没有办法配置Rails所以我可以告诉它也搜索以下划线开头的文件,然后是类的名字?

谢谢!

0 个答案:

没有答案