工头无法加载环境变量

时间:2015-06-24 20:51:18

标签: ruby-on-rails ruby ruby-on-rails-4 foreman

我使用的是rails 4.0.0和ruby 2.0.0

当我使用foreman启动服务器时某些的环境变量无法加载。这真的让我觉得有些变量被加载了。

foreman start -e development.env

Procfile

web: bundle exec passenger start -p $PORT -e $RAILS_ENV
worker: bundle exec rake jobs:work RAILS_ENV=$RAILS_ENV

development.env文件

S3_BUCKET=bucketname
AWS_ACCESS_KEY_ID=accesskey
AWS_SECRET_ACCESS_KEY=secretaccesskey
RAILS_ENV=development
PORT=3000

在我的application.rb文件中,我添加了一些日志记录来帮助调试此问题

puts "PORT is #{ENV["PORT"].inspect}"
puts "RAILS_ENV is #{ENV["RAILS_ENV"].inspect}"
puts "S3_BUCKET is #{ENV["S3_BUCKET"].inspect}"
puts "AWS_ACCESS_KEY_ID is #{ENV["AWS_ACCESS_KEY_ID"].inspect}"
puts "AWS_SECRET_ACCESS_KEY is #{ENV["AWS_SECRET_ACCESS_KEY"].inspect}"

启动服务器后,这是日志代码的输出

23:34:52 worker.1 | PORT is nil
23:34:52 worker.1 | RAILS_ENV is "development"
23:34:52 worker.1 | S3_BUCKET is nil
23:34:52 worker.1 | AWS_ACCESS_KEY_ID is nil
23:34:52 worker.1 | AWS_SECRET_ACCESS_KEY is nil

为什么哦为什么? : - (

当我用foreman加载rails控制台时,它成功加载了变量

foreman run -e development.env rails c

1 个答案:

答案 0 :(得分:0)

尝试修改您的development.env

export S3_BUCKET=bucketname
export AWS_ACCESS_KEY_ID=accesskey
export AWS_SECRET_ACCESS_KEY=secretaccesskey
export RAILS_ENV=development
export PORT=3000

然后在终端

$ source /path/to/development.env
$ foreman start

高级

您可以使用dotenv管理某些环境变量,而不会污染您的系统环境。虽然它无法管理服务器启动所需的环境变量,如PORT