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

3

我正在将一个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这样传递参数到控制台,如果可以,怎么做?

1个回答

2
您应该按照以下方式指定参数:
➜  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以获取传递的值。如果需要更多信息,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接