我对 Rails 用于加载其config.autoload_paths
.
我正在构建一个使用一些宝石的应用程序。
这组 gem 应该由应用程序扩展,如果User
在 gem 中定义了一个模型,那么如果应用程序想要扩展该模型,您将必须创建一个名为 的文件"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,所以我可以告诉它也搜索以下划线开头并后跟类名的文件?
谢谢!