Ruby on rails 从rails应用程序控制器中调用ruby脚本

Ruby on rails 从rails应用程序控制器中调用ruby脚本,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我对rails非常陌生,我有一个脚本,可以从控制台运行,如下所示 $ ruby axml2xml.rb ExamPaper.apk 现在,我如何从控制器方法中调用此脚本并传递与ExamPaper.apk相同的参数 我尝试了require'axml2xml.rb',但指向这行代码Zip::ZipFile.foreach(ARGV[0])do | f |时出错。因此,基本上,我如何在我的控制器中创建类似于axml2xml.rb'ExamPaper.apk'的东西?如果要将其作为shell命令

我对rails非常陌生,我有一个脚本,可以从控制台运行,如下所示

   $ ruby axml2xml.rb ExamPaper.apk
现在,我如何从控制器方法中调用此脚本并传递与
ExamPaper.apk
相同的参数


我尝试了
require'axml2xml.rb'
,但指向这行代码
Zip::ZipFile.foreach(ARGV[0])do | f |
时出错。因此,基本上,我如何在我的控制器中创建类似于
axml2xml.rb'ExamPaper.apk'
的东西?

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

exec 'ruby axml2xml.rb ExamPaper.apk'

您至少有3个选项:

  • exec(命令)
  • %x{command}
  • 系统(命令)
它们有不同的行为,因此请务必阅读和/或的答案,以了解有关这些命令的更多信息

system("ls")
%x("ls")
`ls`   #nice they are back ticks
exec "ls"
在您的情况下,backticks或
%x
命令可能是最好的选择

value = `ruby axml2xml.rb ExamPaper.apk`

在ruby中,有几种运行shell命令的方法

system("ls")
%x("ls")
`ls`   #nice they are back ticks
exec "ls"

但我不确定通过rails运行类似命令所需的权限。

您可以尝试使用
system
popen
,但只能用于短任务,有关更多信息,请参阅

如果您的任务更耗时,您肯定应该查看类似的内容,并使用后台作业或某种队列来运行您的作业。这样,服务器就不会被阻塞,用户也不必等到作业完成