我有一個rails引擎,它公開了一個名爲myengine create
的命令。該命令生成一個完整的Rails應用程序,其中myengine
已經集成到其中。該命令調用rails new ...
來生成應用程序。一切正常,只要我執行這個命令外部的引擎文件夾。但是,如果我在引擎文件夾內執行它,它會因爲它在引擎內運行bin/rails
命令而不是系統上安裝的常規rails
命令而中斷。引擎文件夾內的bin/rails
被配置爲使用引擎,因此它沒有rails new
命令。如何從引擎內部運行「rails new ..」
我試圖編寫自動化測試,在引擎中運行myengine create
命令來驗證輸出。如果我在引擎目錄內的任何地方,則調用rails new
失敗。
我試過指定確切的rails
命令,如"/home/me/.rvm/gems/ruby-2.3.1/bin/rails new ..."
,但這不起作用。
我已經能夠提出的唯一解決方法是使用Dir.chdir
或Thor的inside
方法在引擎文件夾之外構建應用程序。我可以在那裏測試它,甚至將新生成的應用程序文件夾移回到我的spec/
文件夾中。它可以工作,但感覺馬虎。必須有一些方法來從引擎內部生成新的。