2016-02-26 89 views
1

我正在將Rails應用程序從主要版本3升級到4.在以前的版本中,我們可以通過在Application類中傳遞一個塊到config.before_initialize來啓動啓動過程。從這裏我可以指定選項,如rails c -some_cool_switch,並可以從ARGV訪問它。如何使用命令行參數啓動Rails控制檯?

在Rails 4中,我無法訪問此塊中的pry行,因爲出現以下錯誤invalid option: --foobar (OptionParser::InvalidOption)

我即將潛入源代碼來找出我可以做的短猴補丁,並會報告回來。我希望別人有更好的解決方案,或者至少有一個想法,我錯了。

我總是可以回退到類似SOME_ENV_VAR=some_cool_switch rails c的東西,只是使用另一個ENV變量,但我想知道我的選項,如果這是更好的方法或不。

故此不再起作用

railties寶石已經改變。之前在Rails 3上,直到在Console上調用了start,命令行參數才被解析。現在,在應用程序初始化之前解析命令行,並且選項是嚴格的,因此會引發錯誤。

TL;博士

在軌道4,這可能將參數傳遞到控制檯等rails c --some_arg,如果是,如何?

回答

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得到傳遞的值。請讓我知道你是否需要更多。

+0

謝謝!這是訣竅。 – Aaron

相關問題