如何将系统中的环境变量存储为secrets.yml来读取?

时间:2016-07-29 18:52:39

标签: ruby-on-rails environment-variables

在我的Rails 4应用程序中,我的secrets.yml文件包含以下内容:

  admin_name: <%= ENV["ADMIN_NAME"] %>
  admin_email: <%= ENV["ADMIN_EMAIL"] %>
  admin_password: <%= ENV["ADMIN_PASSWORD"] %>

虽然我尝试将环境变量添加到.bash_profile

export admin_name="Admin"
export admin_email="info@site.com"
export admin_password="admin"

我可以从shell访问它们:

echo $admin_password
Admin

甚至来自rails console production

ENV['admin_name']
 => "Admin" 

我认为两次都会查看root用户的.bash_profile,而不是运行Rails应用程序的nginx / passenger进程,因此我认为这些环境变量不适用于Rails进程。因此,当我尝试使用引用查看secrets.yml的文件的rake时,它无法读取环境变量:

RAILS_ENV=production bundle exec rake db:seed
seeding Role
seeding User
rake aborted!
ActiveRecord::RecordInvalid: Validation failed: Email can't be blank, Password can't be blank

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

在bash变量的命名中只是区分大小写的问题吗?

看来导出的变量是小写的,你的secrets.yml中的ENV散列中引用的是大写的。