私は次のコードを持っています/config/initializers/chargify.rb
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = '123xyz'
end
しかし、開発と本番の設定が異なります。
では、環境に基づいて異なる変数値のセットを取得するにはどうすればよいでしょうか?
私は次のコードを持っています/config/initializers/chargify.rb
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = '123xyz'
end
しかし、開発と本番の設定が異なります。
では、環境に基づいて異なる変数値のセットを取得するにはどうすればよいでしょうか?
このための構成ファイルを作成します ( config/chargify.yml):
development:
subdomain: example
api_key: 123abc
production:
subdomain: production_domain
api_key: 890xyz
次に、イニシャライザを次のように変更します。
chargify_config_file = File.join(Rails.root,'config','chargify.yml')
raise "#{chargify_config_file} is missing!" unless File.exists? chargify_config_file
chargify_config = YAML.load_file(chargify_config_file)[Rails.env].symbolize_keys
Chargify.configure do |c|
c.subdomain = chargify_config[:subdomain]
c.api_key = chargify_config[:api_key]
end
どうですか:
Chargify.configure do |c|
if Rails.env.production?
# production settings
c.api_key = '123xyz'
else
# dev. and test settings
c.api_key = '123xyz'
end
end
さらに良いことに、caseブロックを使用して重複を減らすことができます。
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = case
when Rails.env.production?
'123xyz'
when Rails.env.staging?
'abc123'
else
'xyz123'
end
end
環境ごとに異なる設定が必要な場合は、config/environments/development.rb.
それらを初期化子に入れることを絶対に主張する場合 (ただし、そうしないでください。それが環境ファイルの目的です)、caseステートメントを使用しRails.envて、現在の環境の名前を文字列として返す の値を調べることができます。