我正在将一个Rails应用程序从主版本3升级到4. 在以前的版本中,我们可以通过向Application
类中的config.before_initialize
传递一个块来进入引导过程。在这里,我可以指定像rails c -some_cool_switch
这样的选项,并从ARGV
访问它。
在Rails 4中,我甚至不能进入此块中的pry行,因为我会收到以下错误:invalid option: --foobar (OptionParser::InvalidOption)
。
我将要深入源代码以找出除了猴子补丁之外可以做什么,并报告回来。我希望有人有更好的解决方案或者至少知道我是否走错了方向。
我总是可以退回到像SOME_ENV_VAR=some_cool_switch rails c
这样的方法,并只使用另一个ENV变量,但我想知道我的选择并且是否这是更好的方法。
为什么不起作用
railties
gem已经改变。在Rails 3上,直到Console
上调用start
命令行参数才被解析。现在,在应用程序初始化之前解析命令行,并且选项是严格的,因此会引发错误。
tl;dr
在Rails 4中,是否可以像rails c --some_arg
这样传递参数到控制台,如果可以,怎么做?