Rails 4.1环境变量没有重新加载

时间:2015-03-22 14:19:35

标签: ruby-on-rails bash ruby-on-rails-4 environment-variables

我在配置目录中创建了一个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时,值不会更新且新密钥不会被更新可用。

我尝试重启终端,但它没有用。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

看起来问题是spring在启动时缓存应用程序的状态 - 它不知道对config / application.yml的更改应该导致重新加载应用程序

您可以通过创建config/spring.rb来自定义春季观看和重新加载应用的方式 - 它看起来像添加类似

的内容
Spring.watch "config/application.yml"

是你追求的目标

答案 1 :(得分:1)

gem 'spring'

中删除Gemfile