rails控制器内的命令行语句

时间:2012-08-14 08:06:53

标签: ruby-on-rails ruby-on-rails-3.2

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

例如:我需要执行此声明

  

$ rails new test -d postgresql

来自我的rails控制器

  

def index

     

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

     

希望很清楚..

4 个答案:

答案 0 :(得分:11)

如果你想在控制器内运行shell命令,只需使用" system"

例如:

system "rails new test -d postgresql"

或者

exec "rails new test -d postgresql"

答案 1 :(得分:3)

使用反引号进行炮轰,如下所示:
    `rails new test -d postgresql`

为此使用作业队列可能更聪明。

答案 2 :(得分:3)

要在控制器内运行命令行语句,我们可以使用system命令

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

答案 3 :(得分:2)

就像PradeepKumar 所说的那样(会对其进行评论,但由于代表不能):

  

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

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

system "cd {path_to_folder}"

然后:

system "rails new test -d postgresql"

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

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