2012-07-04 24 views
1

中调用Ruby脚本我很新的轨道,我有我这样从从一个Rails应用程序控制器

$ ruby axml2xml.rb ExamPaper.apk 

控制台运行现在,我该怎么称呼这个脚本中的脚本我的控制器方法和传递相同的参数为ExamPaper.apk

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

回答

4

您至少有3个选项:

  • exec(command)
  • %x{ command }
  • system(command)

他们有不同的行为,因此请务必阅读this quicktip和/或this question的答案以了解有关这些命令的更多信息。

就你而言,反引号或%x命令可能是最好的选择。

value = `ruby axml2xml.rb ExamPaper.apk` 
+0

谢谢兄弟!我正在使用%x – Diffy

0

如果你想执行它作为一个shell命令,使用方法:

exec 'ruby axml2xml.rb ExamPaper.apk' 
0

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

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

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

1

您可以尝试使用systempopen,但仅限于短期任务,有关详细信息,请参阅here

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

相关问题