从Rails应用程序控制器中调用ruby脚本

我对rails非常陌生,我有一个脚本,可以像这样从控制台运行

   $ ruby axml2xml.rb ExamPaper.apk

现在,我如何从我的控制器方法中调用这个脚本并传递与ExamPaper.apk相同的参数?

我试过require 'axml2xml.rb'但是有一些错误指向这行代码Zip::ZipFile.foreach(ARGV[0]) do |f| 。 所以基本上,我如何使我的控制器中的axml2xml.rb 'ExamPaper.apk'东西?


你至少有3个选择:

  • exec(command)
  • %x{ command }
  • system(command)
  • 他们有不同的行为,因此请务必阅读此快速提示和/或此问题的答案以了解有关这些命令的更多信息。

    在你的情况下,反引号或%x命令可能是最好的选择。

    value = `ruby axml2xml.rb ExamPaper.apk`
    

    您可以尝试使用systempopen ,但仅限于短期任务,有关更多信息,请参阅此处。

    如果你的任务比较费时,你肯定应该看看诸如delayed_job之类的东西,并使用后台作业或某种队列来运行你的工作。 这样,您的服务器不会被阻止,并且用户无需等到作业完成即可。


    如果您想将其作为shell命令执行,请使用:

    exec 'ruby axml2xml.rb ExamPaper.apk'
    
    链接地址: http://www.djcxy.com/p/25303.html

    上一篇: Call a ruby script from within a rails app controller

    下一篇: How can an external command return both its output and its exit status to Ruby?