Ruby on rails 从rails应用程序控制器中调用ruby脚本
我对rails非常陌生,我有一个脚本,可以从控制台运行,如下所示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命令
$ 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
,但只能用于短任务,有关更多信息,请参阅
如果您的任务更耗时,您肯定应该查看类似的内容,并使用后台作业或某种队列来运行您的作业。这样,服务器就不会被阻塞,用户也不必等到作业完成