Бригадир не может загрузить переменные среды

Я использую рельсы 4.0.0 и рубин 2.0.0.

Когда я запускаю сервер с мастером, некоторые переменные среды не загружаются. Меня действительно беспокоит, что некоторые переменные загружаются.

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 run -e development.env rails c

person kev    schedule 24.06.2015    source источник
comment
Показанные вами выходные данные журнала относятся к рабочему процессу. Видит ли веб-процесс переменные среды, как это делает консоль rails?   -  person Sunil D.    schedule 25.06.2015
comment
Я не думаю, что какие-либо из ваших значений из development.env используются. Сам Rails устанавливает для переменной среды RAILS_ENV значение «разработка», если она еще не установлена. Вы можете убедиться в этом, попробовав установить RAILS_ENV в другое значение.   -  person Wally Altman    schedule 25.06.2015


Ответы (1)


Попробуйте изменить свой 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.

person Aetherus    schedule 24.06.2015