我曾经看到很多gem,您可以在application.rb
文件或某个环境文件中配置它们,因为它们挂接到Railtie的配置助手中。但现在看来,我使用的每一个gem都通过具有自定义配置实现(例如Devise的Devise.setup do |config|
)的初始化器文件来处理配置。
我怀疑其中一个原因是我使用的gem恰好有很多配置选项,所以使用初始化器是有意义的。但是,是否还有其他原因不使用Railtie的config
?
假设我正在构建一个gem,我只想公开一些用户配置选项。与使用Railties相比,使用具有自定义设置逻辑的初始值设定项文件的优缺点是什么?
使用初始化器文件可以避免将gem的配置与框架如何加载配置的特定细节联系起来。
以Devise为例,如果轨道挂钩发生变化,它将突然恢复到默认行为。这意味着维护人员需要更改生成器和模板,最终用户在升级rails时需要更改其配置。
卸载使用初始化器文件的gem也是非常直接的。