我想運行一個ruby腳本,它將被一個控制器的aftest方法調用。 當消除控制時,我們知道當前路徑是項目的根源。無法從Rails調用/運行/執行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」紅寶石腳本停止。(所以我將其標記〜他們不會在我的應用程序中使用) 但劇本還停留在某處不expectaion, 是運行腳本有沒有限制? 該腳本將運行數小時。 我可以在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 %>
是的,我確實使用了系統調用腳本,它的工作好!但不能在rails上運行。我寫了一個由控制器調用的簡單ruby腳本。它也行得通〜 – newBike 2013-02-21 00:03:32
仔細看看我原來的帖子,你是否將參數分成了單個參數到系統?如果是這樣,那麼我認爲你現在正進入'預備'問題。服務器上的腳本是否具有運行Web服務器的用戶帳戶的執行權限? – RadBrad 2013-02-21 01:10:26
仍然不起作用,我輸入命令chmod -R 777 * undex prj_root。它仍然沒有工作~~ – newBike 2013-02-21 07:50:08