gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:00:48 24 4
gpt4 key购买 nike

我正在将一个 Rails 应用程序从主版本 3 升级到主版本 4。在之前的版本中,我们可以通过将一个 block 传递给 config.before_initialize 来进入启动过程。在我们的 Application类(class)。从这里我可以指定像 rails c -some_cool_switch 这样的选项并可以从 ARGV 访问它.

在 Rails 4 中,我什至无法到达此 block 中的 pry 线,因为我收到以下错误 invalid option: --foobar (OptionParser::InvalidOption) .

我将深入研究源代码,找出除了猴子补丁之外我还能做些什么,并会报告回来。我希望其他人有更好的解决方案,或者至少知道我走错了路。

我总是可以回退到类似 SOME_ENV_VAR=some_cool_switch rails c 的东西并且只使用另一个 ENV var,但我想知道我的选择,以及这是否是更好的方法。

不再有效的原因

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

tl;dr

在 Rails 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 以获取传递的值。如果您需要更多信息,请告诉我。

关于ruby-on-rails - 如何使用命令行参数启动 Rails 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com