0

嗨,我创建了一个新的 rails 应用程序。在控制器内部,我使用了一个 shell cmd 来创建一个新的 rails 应用程序,

class DemoController < ApplicationController
  def index
    exec "rails new testing -d postgresql"
  end

  def list
  end
end

我收到以下错误。无法在另一个目录中初始化新的 Rails 应用程序,请先切换到非 Rails 目录。输入“rails”寻求帮助。

我知道在另一个应用程序中创建一个新的 Rails 应用程序是不可能的。

是否有任何函数可以在 exec 命令中指定存储位置?或类似这样的 exec "[directory location] rails new testing -d postgresql"..?

4

2 回答 2

1

您可以将路径传递给rails new命令:

system "rails new /target/folder/testing -d postgresql"

或者cd到目标文件夹然后运行rails new​​. 像这样:

system "cd /target/folder && rails new testing -d postgresql"
于 2012-08-31T06:56:55.910 回答
1

我知道这已经很晚了,但是想做类似的事情,这对我有用:

  1. cd ~/Projects; rails new #{@app.name}(周围有反引号)- 这个是“默默地”执行的。没有显示输出,应用程序在rails new运行时挂起

  2. system "cd ~/Projects; rails new #{@app.name}"- 这显示了控制台上的输出,即生成的文件与应用程序一起显示,bundle install同时应用程序挂起

  3. exec "cd ~/Projects; rails new #{@app.name}"- 这会关闭服务器并显示和的rails new输出bundle install

我想从另一个应用程序中创建一个应用程序。在你的情况下,我想你可以这样做: exec "cd folder_name; rails new testing -d postgresql". 我建议您使用前两个选项中的任何一个来exec关闭服务器并使您的应用程序停止。

于 2013-12-14T16:44:54.997 回答