如何使用ActiveSupport :: Configurable with Rails Engine

我想给我的rails引擎gem一个合适的配置可能性。 在initializers/my_gem.rb中看起来像这样的东西(链接到当前的初始化程序) :

 MyGem.configure do |config| config.awesome_var = true # config.param_name = :page end 

因此,我一直在寻找其他gem中的任何线索,我发现的最好的云是kaminari/config.rb 。 但它看起来很丑陋,我认为必须有更好的方法。

ActiveSupport::Configurable的源文件得到了不错的文档: https : //github.com/rails/rails/blob/master/activesupport/lib/active_support/configurable.rb

我喜欢将配置放入引擎内的自己的类中(如kaminari一样):

 class MyGem def self.configuration @configuration ||= Configuration.new end def self.configure yield configuration end end class MyGem::Configuration include ActiveSupport::Configurable config_accessor(:foo) { "use a block to set default value" } config_accessor(:bar) # no default (nil) end 

现在我可以使用此API配置引擎:

 MyGem.configure do |config| config.bar = 'baz' end 

并使用访问配置

 MyGem.configuration.bar 

试试这个

我希望这很简单明了。

示例代码