如何使用命令行参数启动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得到传递的值。请让我知道你是否需要更多。

+0

谢谢!这是诀窍。 – Aaron