Ruby on rails 如何使ruby gem读取初始值设定项?

Ruby on rails 如何使ruby gem读取初始值设定项?,ruby-on-rails,Ruby On Rails,我正在为RubyonRails编写一个依赖于初始值设定项的gem。我有config/initializers/pi.rb和: PI_KEY = 'my key' PI_SECRET = 'my secret' 在gem的lib/pi.rb中,我想要: module Pi HEADERS = { 'X-Auth-Key' => ::PI_KEY 'X-Auth-Secret' => ::PI_SECRET } end 但是在gem加载时,PI_键是未定义的R

我正在为RubyonRails编写一个依赖于初始值设定项的gem。我有
config/initializers/pi.rb
和:

PI_KEY = 'my key'
PI_SECRET = 'my secret'
在gem的
lib/pi.rb中,我想要:

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

但是在gem加载时,PI_键是未定义的
Rails.root那时还没有定义,所以我不能只
需要
初始值设定项。那么,如何将配置从rails初始值设定项传递到我的gem?

您可以这样做,例如:

在您的
lib/pi.rb
中:

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

  def self.configure(&block)
    yield self
  end
end
Pi.configure do |config|
  config.key = 'some key'
  config.secret = 'I am Batman'
end

您可以这样做,例如:

在您的
lib/pi.rb
中:

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

  def self.configure(&block)
    yield self
  end
end
Pi.configure do |config|
  config.key = 'some key'
  config.secret = 'I am Batman'
end