2016-08-18 39 views
1

我有一個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/文件夾中。它可以工作,但感覺馬虎。必須有一些方法來從引擎內部生成新的。

回答

0

如果有其他人遇到這個問題,我最終增強了我的命令,在嘗試運行rails new之前將bin/rails重命名爲臨時新名稱。然後該命令將其重命名爲rails new