【问题标题】:Commandline statement inside rails controllerrails 控制器内的命令行语句
【发布时间】:2012-08-14 08:06:53
【问题描述】:

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

eg: 我需要执行这个语句

$rails new test -d postgresql

来自我的 Rails 控制器

定义索引

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

结束

希望很清楚..

【问题讨论】:

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


    【解决方案1】:

    如果你想在控制器中运行 shell 命令,只需使用“系统”

    例如:

    system "rails new test -d postgresql"
    

    否则

    exec "rails new test -d postgresql"
    

    【讨论】:

    • 嗨,我无法在现有应用程序的控制器内创建新的 Rails 应用程序。我收到以下错误:无法在另一个目录中初始化新的 Rails 应用程序,请先切换到非 Rails 目录。输入“rails”寻求帮助。
    • @Yothesh 错误准确地告诉您问题出在哪里,请尝试在与您所在目录不同的目录中创建一个新应用程序。我知道这是一个超级旧的评论,但嘿,它没有伤害
    【解决方案2】:

    使用反引号来表示,如下所示:
    `rails new test -d postgresql`

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        就像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 程序的环境中执行。

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

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-24
          相关资源
          最近更新 更多