Have configuration in aws_setting.yml for different environments, as:
在aws_setting.yml中为不同的环境配置,如下所示:
local: &local_settings
enable_setting: true
heroku: &heroku_settings
enable_setting: <%= ENV['MY_SETTING'] %>
test:
<<: *local_settings
development:
<<: *local_settings
staging:
<<: *heroku_settings
In heroku added MY_SETTING kvp in staging's Config Vars
在heroku中,在staging的Config Vars中添加了MY_SETTING kvp
Loaded settings during initialization:
初始化期间加载的设置:
S3_SETTING = YAML.load_file("#{::Rails.root}/config/aws_setting.yml")[Rails.env]
Now after deployment to staging, instead of getting value for S3_Setting['enable_setting']
as true
or false
, receiving '<%= ENV['MY_SETTING'] %>' as text.
现在在部署到暂存之后,不是将S3_Setting ['enable_setting']的值设置为true或false,而是将<<%= ENV ['MY_SETTING']%>'作为文本接收。
1 个解决方案
#1
1
This is because you're just loading YAML. You also need to parse the content as ERB to get the value extrapolated.
这是因为你只是加载YAML。您还需要将内容解析为ERB以获得外推值。
YAML.load(ERB.new(File.read("#{::Rails.root}/config/aws_setting.yml")).result)[Rails.env]
#1
1
This is because you're just loading YAML. You also need to parse the content as ERB to get the value extrapolated.
这是因为你只是加载YAML。您还需要将内容解析为ERB以获得外推值。
YAML.load(ERB.new(File.read("#{::Rails.root}/config/aws_setting.yml")).result)[Rails.env]