如何从引擎内部 运行 "rails new.."
How to run "rails new.." from inside an engine
我有一个 rails 引擎公开了一个名为 myengine create
的命令。该命令生成一个完整的 Rails 应用程序,其中 myengine
已集成到其中。该命令调用 rails new ...
来生成应用程序。只要我在引擎文件夹 outside 执行此命令,一切都会正常。但是,如果我在引擎文件夹中执行它,它会中断,因为它 运行 是引擎中的 bin/rails
命令,而不是系统上安装的常规 rails
命令。引擎文件夹中的 bin/rails
配置为与引擎一起使用,因此它没有 rails new
命令。
我正在尝试编写自动化测试,运行 来自引擎内部的 myengine create
命令来验证输出。如果我在引擎目录中的任何地方,调用 rails new
会失败。
我试过指定确切的 rails
命令,例如 "/home/me/.rvm/gems/ruby-2.3.1/bin/rails new ..."
,但这不起作用。
我能想到的唯一解决方法是使用 Dir.chdir
或 Thor 的 inside
方法在引擎文件夹之外构建应用程序。我可以在那里对其进行测试,甚至可以将新生成的应用程序文件夹移回我的 spec/
文件夹中。它有效,但感觉草率。必须有某种方法可以从引擎内部生成新的。
如果其他人 运行 对此感兴趣,我最终增强了我的命令以在尝试 运行 rails new
之前将 bin/rails
重命名为临时新名称。然后命令在 rails new
完成后将其重命名。
我有一个 rails 引擎公开了一个名为 myengine create
的命令。该命令生成一个完整的 Rails 应用程序,其中 myengine
已集成到其中。该命令调用 rails new ...
来生成应用程序。只要我在引擎文件夹 outside 执行此命令,一切都会正常。但是,如果我在引擎文件夹中执行它,它会中断,因为它 运行 是引擎中的 bin/rails
命令,而不是系统上安装的常规 rails
命令。引擎文件夹中的 bin/rails
配置为与引擎一起使用,因此它没有 rails new
命令。
我正在尝试编写自动化测试,运行 来自引擎内部的 myengine create
命令来验证输出。如果我在引擎目录中的任何地方,调用 rails new
会失败。
我试过指定确切的 rails
命令,例如 "/home/me/.rvm/gems/ruby-2.3.1/bin/rails new ..."
,但这不起作用。
我能想到的唯一解决方法是使用 Dir.chdir
或 Thor 的 inside
方法在引擎文件夹之外构建应用程序。我可以在那里对其进行测试,甚至可以将新生成的应用程序文件夹移回我的 spec/
文件夹中。它有效,但感觉草率。必须有某种方法可以从引擎内部生成新的。
如果其他人 运行 对此感兴趣,我最终增强了我的命令以在尝试 运行 rails new
之前将 bin/rails
重命名为临时新名称。然后命令在 rails new
完成后将其重命名。