为什么现代rails插件gems更喜欢配置初始化器而不是Railtie的配置挂钩?

时间:2016-07-23 17:50:10

标签: ruby-on-rails rubygems ruby-on-rails-plugins railtie

我曾经看到很多宝石,你可以在application.rb文件或其中一个环境文件中配置它们,因为它们挂钩了Railtie的配置助手。但现在似乎我使用的每个gem都通过使用带有自定义配置实现的初始化文件来处理配置(例如Devise的Devise.setup do |config|)。

我怀疑其中一个原因是我正在使用的宝石碰巧有很多配置选项,所以使用初始化器是有意义的。但是有没有其他理由不使用Railtie的config

假设我正在构建一个gem,我只想公开一些用户配置选项。使用具有自定义设置逻辑的初始化文件与使用Railties的优缺点是什么?

1 个答案:

答案 0 :(得分:0)

使用初始化程序文件可以避免将gem的配置与框架加载配置的具体细节联系起来。

以Devise为例 - 如果铁路挂钩改变了,它会突然恢复到默认行为。这意味着维护者需要更改生成器和模板,最终用户在升级rails时需要更改其配置。

卸载使用初始化程序文件的gems也非常简单。