我使用的是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
答案 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
。