在我的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
我该如何处理这种情况?
答案 0 :(得分:0)
在bash变量的命名中只是区分大小写的问题吗?
看来导出的变量是小写的,你的secrets.yml中的ENV散列中引用的是大写的。