6

Railsコントローラー内でRailsコマンドラインステートメントを実行する方法

例: このステートメントを実行する必要があります

$rails 新しいテスト -d postgresql

私のレールコントローラから

デフインデックス

/コマンドラインステートメントを実行するコード/

終わり

希望は明確です..

4

4 に答える 4

13

コントローラー内でシェルコマンドを実行したい場合は、「system」を使用してください

例えば:

system "rails new test -d postgresql"

またはそうでなければ

exec "rails new test -d postgresql"
于 2012-08-14T08:20:17.970 に答える
3

次のように、バッククォートを使用してシェルアウトします:
`rails new test -d postgresql`

これにはジョブ キューを使用する方が賢明かもしれません。

于 2012-08-14T08:17:32.317 に答える
3

コントローラー内でコマンドラインステートメントを実行するには、systemコマンドを使用できます

system "cd {path_to_folder}; rails new test -d postgresql"
于 2012-08-14T08:17:33.960 に答える
2

PradeepKumarが言ったように(それについてコメントしますが、担当者のためにできません)

system "cd {path_to_folder}; rails new test -d postgresql"

同じ命令で実行するすべてのコマンドを宣言する必要があります ( で区切られます;)。私はそうしていませんでした(cdランナブルでディレクトリにアクセスするコマンドと、実際の実行行を2つの異なる呼び出しで分離しました)、得られた結果は望ましいものではありませんでした。たとえば、次のコマンドを実行しようとすると:

system "cd {path_to_folder}"

その後:

system "rails new test -d postgresql"

rails コマンドはpath_to_folderのコンテキストでは実行されませんが、コマンド ライン インターフェイス (たとえばC:\Users\Me) または Rails プログラムの環境の既定の場所で実行されます。

&また、コマンドの最後にa を追加して修正したコマンド実行時にエラーが発生しました。この場合、命令には 2 つのコマンドが含まれているため、最初のコマンドの最後 ( の前;) に追加しました。

于 2016-07-18T13:24:02.987 に答える