我有一个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/
文件夹中。它可以工作,但感觉马虎。必须有一些方法来从引擎内部生成新的。