2016-08-18 49 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