如何在rails控制器中执行rails命令行语句
例如:我需要执行此声明
$ rails new test -d postgresql
来自我的rails控制器
def index
/ 执行命令行语句的代码 /
端
希望很清楚..
答案 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>
此外,我在命令执行时遇到错误,我通过在命令末尾添加&
来修复。在这种情况下,指令有两个命令,我在第一个命令的末尾添加它(在;
之前)。