2016-02-26 3 views
1

Я занимаюсь обновлением приложения Rails из основной версии с 3 по 4. В предыдущей версии мы могли задействовать процесс загрузки, передав блок config.before_initialize в нашем классе Application. Отсюда я мог бы указать такие параметры, как rails c -some_cool_switch и получить к нему доступ от ARGV.Как запустить консоль Rails с аргументами командной строки?

В Rails 4 я не могу даже добраться до линии pry в этом блоке, так как получаю следующую ошибку: invalid option: --foobar (OptionParser::InvalidOption).

Я собираюсь погрузиться в исходный код, чтобы выяснить, что я могу сделать, за исключением исправления обезьяны и отчитаться. Я надеялся, что у кого-то есть лучшее решение или, по крайней мере, идея о том, что я иду вверх по неправильному дереву.

Я всегда могу отступить к чему-то вроде SOME_ENV_VAR=some_cool_switch rails c и просто использовать другой ENV var, но я хотел бы знать свои варианты, и если это лучший подход или нет.

Причина этого больше не работает

railties камень изменился. Ранее на Rails 3 аргументы командной строки не обрабатывались до тех пор, пока start не был вызван на Console. Теперь командная строка анализируется до того, как приложение инициализируется, а параметры строги, поэтому возникает ошибка.

Т.Л., д-р

В Rails 4, можно передавать аргументы в консоль как rails c --some_arg, и если да, то каким образом?

ответ

1

Вы должны указать аргументы, как показано ниже,

➜ test_app git:(master) ✗ RAILS_E=rails_test rails c -- --rails_env_test test 
Loading development environment (Rails 4.2.1) 
[1] pry(main)> ARGV 
=> ["--rails_env_test", "test"] 
[2] pry(main)> 

или

➜ test_app git:(master) ✗ RAILS_E=rails_test rails c -- --rails_env_test=test    
Loading development environment (Rails 4.2.1) 
[1] pry(main)> ARGV 
=> ["--rails_env_test=test"] 
[2] pry(main)> 

После этого вы можете обработать ARGV, чтобы получить переданные значения. Пожалуйста, дайте мне знать, если вам нужно больше об этом.

+0

Спасибо! Это делает трюк. – Aaron

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