2013-02-20 5 views
1

Я хочу запустить ruby-скрипт, который будет вызываться методом aftest контроллера. , когда мы выдаем управляющий сигнал, мы знаем, что текущий путь находится в корне проекта.Не удается вызвать/запустить/выполнить ruby-скрипт из Rails

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 он работает как на раковине, так и на рельсах.

так что проблема? разрешение? настройка?

Спасибо всем заблаговременно ~ есть все равно, чтобы получить вывод ошибки при вызове скрипта на ROR, Я думаю, что он не показывает сообщение об ошибке.

я нашел скрипт остановки рубин требует «механизировать» и «nokogiri». (Так я маркировать их ~ они не будут использоваться в моем приложении) однако сценарий также остановиться на где-то не в expectaion, является существует ли какой-либо предел для запуска скрипта? сценарий будет работать в течение многих часов. я могу выполнить команду 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' 

** есть кто-нибудь, чтобы показать ошибку, когда я называю рубиновый скрипт контроллером? Мне сложно отлаживать, он не показывал никакой информации. **

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 %> 

ответ

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") 
+0

да, я использовал систему, чтобы вызвать скрипт, он сделал работу !! но не может работать на рельсах. Я написал простой рубиновый скрипт, вызываемый контроллером. это тоже работало ~ – newBike

+0

Посмотрите внимательно на мой оригинальный пост, разделили ли вы аргументы на отдельные аргументы системы? Если это так, то я думаю, что вы сейчас находитесь в вопросе о «предложениях». Имеет ли сценарий на сервере разрешение на выполнение для учетной записи пользователя, на которой работает веб-сервер? – RadBrad

+0

все еще не работает, и я набрал команду chmod -R 777 * undex prj_root. он все еще не работает ~~ – newBike

Смежные вопросы