что может заставить `rails s` игнорировать ключ -e? - PullRequest
0 голосов
/ 04 февраля 2012

Я вижу странное поведение при запуске сервера Rails с rails s -e [env] (добавлено двойное ** для акцента):

~/app> rails s -e=**production**# << ok...v
=> Booting Mongrel              #         v huh?
=> Rails 3.1.1 application starting in **test** on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
^CExiting
~/app> rails s -e=**development**  
=> Booting Mongrel
=> Rails 3.1.1 application starting in **test** on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
^CExiting
~/app> RAILS_ENV=**development** rails s
=> Booting Mongrel
=> Rails 3.1.1 application starting in **development** on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
^CExiting
~/app> RAILS_ENV=**production** rails s
=> Booting Mongrel
=> Rails 3.1.1 application starting in **production** on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

В результате переключатель -e игнорируется.

В руководстве Rails не упоминаются ситуации, когда оно будет переопределено. Справка командной строки говорит -e Specifies the environment to run this server under test/development/production). ОК.

Я действительно думаю, что это работало нормально несколько недель назад (прошло некоторое время с тех пор, как я запустил prod-сервер на этой коробке), поэтому я мог изменить что-то, что сломало это, но что? Я проверил места, где я использовал = вместо ==, но не нашел ни одного. Не думайте , что бы это объяснить.

Обновление: Джон правильно указывает, что это -e [env]. Я попробовал это сначала с теми же результатами, затем попытался -e=[env]. Правильный путь (все еще дает неправильный результат):

~/app> rails s -e production -p 5000
=> Booting Mongrel ^^^^^^^^^           vvvv
=> Rails 3.1.1 application starting in test on http://0.0.0.0:5000
=> Call with -d to detach
=> Ctrl-C to shutdown server

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Убедитесь, что у вас не установлена ​​переменная окружения RAILS_ENV, поскольку она будет переопределять все, что вы передаете в качестве параметра командной строки.

Соответствующий бит источника rails указывает, что

ENV["RAILS_ENV"] ||= options[:environment]

options заполняется из аргументов командной строки, поэтому, если RAILS_ENV уже установленопараметры командной строки не действуют.

0 голосов
/ 04 февраля 2012

Это rails s -e <env>, а не rails s -e=<env>. Обратите внимание на пробел между -e и названием среды:

#Ψ rails s -e production
#=> Booting WEBrick                     vvvvvvvvvv
#=> Rails 3.1.1 application starting in production on http://0.0.0.0:3000
                                        ^^^^^^^^^^
#Ψ rails s -e staging
#=> Booting WEBrick                     vvvvvvv
#=> Rails 3.1.1 application starting in staging on http://0.0.0.0:3000
                                        ^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...