如何使用命令行参数启动Rails控制台?
问题描述:
我正在将Rails应用程序从主要版本3升级到4.在以前的版本中,我们可以通过在Application
类中传递一个块到config.before_initialize
来启动启动过程。从这里我可以指定选项,如rails c -some_cool_switch
,并可以从ARGV
访问它。如何使用命令行参数启动Rails控制台?
在Rails 4中,我无法访问此块中的pry行,因为出现以下错误invalid option: --foobar (OptionParser::InvalidOption)
。
我即将潜入源代码来找出我可以做的短猴补丁,并会报告回来。我希望别人有更好的解决方案,或者至少有一个想法,我错了。
我总是可以回退到类似SOME_ENV_VAR=some_cool_switch rails c
的东西,只是使用另一个ENV变量,但我想知道我的选项,如果这是更好的方法或不。
故此不再起作用
的railties
宝石已经改变。之前在Rails 3上,直到在Console
上调用了start
,命令行参数才被解析。现在,在应用程序初始化之前解析命令行,并且选项是严格的,因此会引发错误。
TL;博士
在轨道4,这可能将参数传递到控制台等rails c --some_arg
,如果是,如何?
答
您应该指定的参数如下图所示,
➜ 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得到传递的值。请让我知道你是否需要更多。
谢谢!这是诀窍。 – Aaron