2016-07-29 114 views
0

在我的Rails应用4,我secrets.yml文件包含以下内容:如何将系统上的环境变量存储到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="[email protected]" 
export admin_password="admin" 

我可以从他们访问外壳:

echo $admin_password 
Admin 

,甚至从rails console production

ENV['admin_name'] 
=> "Admin" 

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

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 

我该如何处理这种情况呢?

回答

0

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

看来导出的变量是小写字母,你的secrets.yml中的ENV哈希引用的是大写字母。

+0

我认为写这个问题只是一个错字。一切都是正确的。 – Donato

相关问题