Shp*_*ord 17 environment ruby-on-rails initializer
我有以下代码 /config/initializers/chargify.rb
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = '123xyz'
end
Run Code Online (Sandbox Code Playgroud)
但我有不同的开发和生产设置.
那么,我如何根据环境获得一组不同的变量值呢?
jig*_*fox 29
我会为this(config/chargify.yml)创建一个配置文件:
development:
subdomain: example
api_key: 123abc
production:
subdomain: production_domain
api_key: 890xyz
Run Code Online (Sandbox Code Playgroud)
然后像这样更改你的初始化程序:
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
Run Code Online (Sandbox Code Playgroud)
关于什么:
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
Run Code Online (Sandbox Code Playgroud)
更好的是,您可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8773 次 |
| 最近记录: |