0

こんにちは、新しい Rails アプリを作成しました。コントローラー内で、シェル コマンドを使用して新しい Rails アプリを作成しました。

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

  def list
  end
end

次のエラーが表示されます。別のディレクトリ内で新しい Rails アプリケーションを初期化することはできません。最初に非 Rails ディレクトリに変更してください。ヘルプを表示するには、「rails」と入力してください。

別のアプリケーション内で新しい Rails アプリケーションを作成することは不可能であることを理解しています。

execコマンドに格納場所を指定する機能はありますか? または、このような exec "[ディレクトリの場所] 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 newbundle install

別のアプリ内からアプリを作成したかった。あなたの場合、次のことができると思います exec "cd folder_name; rails new testing -d postgresql"execサーバーをシャットダウンしてアプリを停止させるため、最初の 2 つのオプションのいずれかを使用することをお勧めします。

于 2013-12-14T16:44:54.997 に答える