我想运行一个 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 上调用脚本时,无论如何都会得到错误输出,我认为它没有显示错误消息。
我发现 ruby 脚本在 require 'mechanize' 和 'nokogiri' 处停止。(所以我标记它们〜它们不会在我的应用程序中使用)但是脚本也停止在预期之外的某个地方,是否有任何限制运行脚本?该脚本将运行数小时。我可以ruby ./public/ruby_lib/af/FullScanTest.rb -i 172.16.178.178 -s 25_10_1 -f auto
在prj_root下执行命令
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 %>