如何让ruby gem读取初始化器?

时间:2018-05-22 00:24:04

标签: ruby-on-rails

我正在为依赖初始化程序的rails上的ruby编写gem。我有config/initializers/pi.rb

PI_KEY = 'my key'
PI_SECRET = 'my secret'

并在宝石的lib/pi.rb中我想:

module Pi
  HEADERS = {
    'X-Auth-Key' => ::PI_KEY
    'X-Auth-Secret' => ::PI_SECRET
  }
end

但是宝石加载时PI_KEY未定义。 Rails.root当时也未定义,因此我不能只require初始值设定项。那么我如何从rails初始化器将配置传递给我的gem呢?

1 个答案:

答案 0 :(得分:1)

你可以这样做,例如:

lib/pi.rb

module Pi
  class << self
    mattr_accessor :key, :secret
  end

  def self.configure(&block)
    yield self
  end
end

然后在应用程序中config/initializers/pi.rb

Pi.configure do |config|
  config.key = 'some key'
  config.secret = 'I am Batman'
end