2015-07-25 2 views
1

У меня есть следующая строка в моем gemfile.Как узнать ENV ['RACK_ENV'] на ruby ​​irb?

if defined? ENV['RACK_ENV'] == 'production' then gem 'pg' else gem 'sqlite3' end 

На Heroku он использует pg драгоценный камень, как он видит это в производстве и на моем компьютере, он использует sqlite камень. Однако на Openshift он говорит, что жемчуг pg не найден, поэтому он не может запустить приложение, поэтому, очевидно, ENV['RACK_ENV'] не думает, что он находится в производстве и, возможно, на разработке.

Как узнать переменную ENV['RACK_ENV'] на irb, rack или ruby ​​в командной строке?

ответ

4

На Heroku для вас была установлена ​​переменная окружения RACK_ENV, это не будет иметь место на вашей локальной машине (или, по-видимому, Openshift). При чтении Ruby переменная среды, которая не установлена, возвращает nil.

$ export ANY_ENV=foo 
$ irb 
irb(main):001:0> puts ENV['ANY_ENV'] 
foo 
=> nil 
irb(main):002:0> puts ENV['ANOTHER_ENV'] 

=> nil 
irb(main):003:0> ENV['ANOTHER_ENV'].nil? 
=> true 

На OpenShift вам необходимо установить RACK_ENV в production через rhc env set RACK_ENV=production -a YOUR_APP_NAME

Они предлагают три способа просмотра переменных окружения:

  • Добавить экспорт заявление в файл App_Name/.openshift/action_hooks/build, а затем запустить git push. Переменные перечислены в выводе Git и начинаются с пульта: declare -x.
  • Доступ к приложению в SSH и запуск команды env в командной строке.
  • Используйте rhc env list -a <appname> command

См https://developers.openshift.com/en/managing-environment-variables.html для получения более подробной информации о настройке переменной среды OpenShift.

Смежные вопросы