无法从Rails调用/运行/执行ruby脚本

时间:2013-02-20 10:10:08

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

我想运行一个ruby脚本,它将由一个控制器的方法调用。 在击败控制器时,我们知道当前路径是项目的根源。

FullScanTest.rb:我想调用的脚本。 我可以在bash shell中运行以下命令,但不能在rails中调用 ruby ./public/ruby_lib/af/FullScanTest.rb -i 172.16.178.178 -s 25_10_1 -f auto 所以我写了一个简单的ruby脚本,它只回复一个字符串。它确实有效〜 ruby ./public/ruby_lib/af/test.rb 它适用于bash-shell和rails。

那么问题是什么? 允许?设置?

提前谢谢大家〜 无论如何我们在ROR上调用脚本时得到错误输出, 我认为它没有显示错误信息。

我发现红宝石脚本停在要求'机械化'和'nokogiri'。(所以我标记它们〜它们不会在我的应用程序中使用) 然而剧本也停在某个不期望的地方, 运行脚本有任何限制吗? 该脚本将运行数小时。 我可以在prj_root

下执行命令ruby ./public/ruby_lib/af/FullScanTest.rb -i 172.16.178.178 -s 25_10_1 -f auto
  require 'open-uri'
  require 'rubygems'

  require 'mechanize'

  require 'logger'
  require 'time'
  require 'nokogiri'
  require 'pp'

** 当我通过控制器调用ruby脚本时,有没有人显示错误? 我很难调试,它没有显示任何信息。 **

def aftest

af_lib="./public/ruby_lib/af/"
prog="FullScanTest.rb"
prog2="test.rb"
params="-i 172.16.178.178 -s 25_10_1 -f auto "
cmd = " ruby #{af_lib}#{prog} #{params}  "
@cmd = %x[ echo #{cmd} ]
res1 = %x[ ruby #{af_lib}#{prog} ]
res2 = %x[ ruby #{af_lib}#{prog2} #{params} --force 2>&1 ]
@res1 = "#{res1}"
@res1 = "#{res2}"

end

我使用视图来显示输出,但它没有显示任何错误

<h1>Af test lala</h1>

<%= form_tag :action => 'update', :id => @some_object %>
<%= form_tag( { :action => :save, }, { :method => :post }) %>
<h2>Command</h2>
<%= @cmd %>
<h2>Results</h2>
<%= @res1 %>
<h3>H3</h3>
<%= @res2 %>

1 个答案:

答案 0 :(得分:0)

你是如何调用脚本的?看作是有效的脚本和没有的脚本之间的唯一区别,是不起作用的脚本有ARGUMENTS ???

您是否使用系统来调用脚本?

system("./public/ruby_lib/af/FullScanTest.rb","-i","172.16.178.178","-s","25_10_1","auto")

甚至更好

path = "#{Rails.root}/public/ruby_lib/af/FullScanTest.rb"
system(path,"-i","172.16.178.178","-s","25_10_1","auto")