我在配置目录中创建了一个application.yml
文件,并添加了一些键值对(即AWS_REGION: us-east-1
)。我还在application.rb
添加了以下内容来读取文件并更新ENV哈希:
if Rails.env.development?
config.before_configuration do
env_file = File.join(Rails.root, 'config', 'application.yml')
YAML.load(File.open(env_file)).each do |key, value|
ENV[key.to_s] = value
end if File.exists?(env_file)
end
end
然后,如果我运行rails c
,我可以看到我在application.yml
文件中设置的ENV变量(即ENV['AWS_REGION']
)。但是,如果我更新任何值或甚至为文件添加新的键值对,则在下次运行rails c
时,值不会更新且新密钥不会被更新可用。
我尝试重启终端,但它没有用。有什么建议吗?
答案 0 :(得分:2)
看起来问题是spring在启动时缓存应用程序的状态 - 它不知道对config / application.yml的更改应该导致重新加载应用程序
您可以通过创建config/spring.rb
来自定义春季观看和重新加载应用的方式 - 它看起来像添加类似
Spring.watch "config/application.yml"
是你追求的目标
答案 1 :(得分:1)
从gem 'spring'
Gemfile