我在/config/initializers/chargify.rb
Rails的初始開發和生產
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = '123xyz'
end
下面的代碼,但我有研發和生產不同的設置。
那麼,我將如何根據環境有一組不同的變量值?
我在/config/initializers/chargify.rb
Rails的初始開發和生產
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
如果您要針對不同的環境需要不同的設置,最好將它們放在各自的環境文件中,如config/environments/development.rb
。
如果你絕對堅持把它們放入初始化程序中(但請不要,這就是環境文件的用途),可以使用case
語句並檢查Rails.env
的值,該值返回當前的名稱環境作爲一個字符串。
application.rb中的註釋將* not *放置在這些文件上並將其放入初始化程序目錄中的文件中。 – 2012-01-11 23:07:29
什麼:
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
我建議你在〜/ .bashrc或〜/ .profile文件 但要注意使用ENV變量
Chargify.configure do |c|
c.subdomain = ENV['APP_SUBDOMAIN']
c.api_key = ENV['API_KEY']
end
,並設置相應的變量:這個必須爲相同的用戶被設置爲Rails的實例暴露。例如。部署在capistrano中指定的用戶是用於部署的
任何人從上面剪切粘貼的快速警告:'sudomain:example'應該是'subdomain:example' – 2012-05-22 10:03:06