我正在将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
之前,不会解析命令行参数。现在,在应用程序初始化之前解析命令行,并且选项是严格的,因此会引发错误。
在Rails 4中,是否可以将参数传递给控制台,如rails c --some_arg
,如果是,如何?
答案 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以获取传递的值。如果您需要更多信息,请告诉我。