1

コントローラーのメソッドの後に呼び出される ruby​​ スクリプトを実行したい。controlle を実行すると、現在のパスがプロジェクトのルートにあることがわかります。

FullScanTest.rb : 呼び出したいスクリプト。次のコマンドを bash シェルで実行できますが、rails ruby​​ ./public/ruby_lib/af/FullScanTest.rb -i 172.16.178.178 -s 25_10_1 -f auto で呼び出すことはできません。文字列 。それは動作しました〜 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 %>
4

1 に答える 1

0

スクリプトをどのように呼び出していますか。動作するスクリプトと動作しないスクリプトの唯一の違いとして、動作しないスクリプトには引数があるという事実がありますか?

システムを使用してスクリプトを呼び出しますか?

すなわち

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")
于 2013-02-20T16:28:11.477 に答える