【问题标题】:How to use ActiveSupport::Configurable with Rails Engine如何使用 ActiveSupport::Configurable 与 Rails 引擎
【发布时间】:2014-07-29 01:07:42
【问题描述】:

我想给我的rails engine gem 一个适当的配置可能性。 在initializers/my_gem.rb (link to the current initializer) 中看起来像这样的东西:

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

所以我四处寻找其他宝石中的任何线索,我发现的最好的就是kaminari/config.rb。 但它看起来很老套,我认为一定有更好的方法。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 configuration rails-engines


    【解决方案1】:

    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
    

    【讨论】:

    【解决方案2】:

    试试这个

    我希望这简单明了。

    Example Code

    【讨论】:

    • 但是它不使用 ActiveSupport::Configurable 并且非常冗余
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多