我在使用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所以我可以告诉它也搜索以下划线开头的文件,然后是类的名字?
谢谢!