6

如何在我们的 rails 控制器中执行 rails 命令行语句

eg:我需要执行这个语句

$rails 新测试 -d postgresql

从我的导轨控制器

定义索引

/执行命令行语句的代码/

结尾

希望清楚..

4

4 回答 4

13

如果你想在控制器中运行 shell 命令,只需使用“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说的(会评论它,但由于代表不能):

系统“cd {path_to_folder}; rails new test -d postgresql”

您必须在同一指令中声明要运行的所有命令(由 a 分隔;)。我没有这样做(将cd访问目录的命令与我的 runnable 和两个不同调用中的实际执行行分开),我得到的结果不是我想要的。例如,如果您尝试运行:

system "cd {path_to_folder}"

进而:

system "rails new test -d postgresql"

rails 命令不会在path_to_folder的上下文中执行,而是在命令行界面的默认位置(例如C:\Users\Me)或 Rails 程序的环境中执行。

此外,我在命令执行时遇到错误,我通过&在命令末尾添加 a 来修复该错误。在这种情况下,指令有两个命令,我将它添加到第一个命令的末尾(在 之前;)。

于 2016-07-18T13:24:02.987 回答