如何使用命令行参数启动Rails控制台?

时间:2016-02-26 19:07:22

标签: ruby-on-rails ruby ruby-on-rails-4 rails-console

我正在将Rails应用程序从主要版本3升级到4.在之前的版本中,我们可以通过将块传递给config.before_initialize Application来启动启动过程。 }类。在这里,我可以指定rails c -some_cool_switch等选项,并可以ARGV访问它。

在Rails 4中,由于我收到以下错误invalid option: --foobar (OptionParser::InvalidOption),我甚至无法访问此块中的pry行。

我即将深入了解源代码,找出我能做些什么来做猴子补丁并报告回来。我希望别人有一个更好的解决方案,或者至少有一个想法,我错误地走上了错误的树。

我总是可以回到SOME_ENV_VAR=some_cool_switch rails c这样的东西,只使用另一个ENV var,但我想知道我的选择,如果这是更好的方法。

原因不再有效

railties宝石已经改变。以前在Rails 3上,在start上调用Console之前,不会解析命令行参数。现在,在应用程序初始化之前解析命令行,并且选项是严格的,因此会引发错误。

TL;博士

在Rails 4中,是否可以将参数传递给控制台,如rails c --some_arg,如果是,如何?

1 个答案:

答案 0 :(得分: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以获取传递的值。如果您需要更多信息,请告诉我。