You are using the backtick operator improperly. Basically, you are doing this:
render(:text => "<pre>" + CGI::escapeHTML(IO.popen(" begin /home/luc/radrails/cpe/public/startq_test.rb #{syntf.path} rescue NoMethodError,SyntaxError,NameError,StandardError,SystemExit,ScriptError => snfault fltlog = File.open("/test/result/script.log", "w") fltlog.puts "#{snfault}" fltlog.close end
").read) + "</pre>")
which executes your shell with "begin /home/luc/radrails/cpe/public/startq_test.rb ...". Since you are trying to execute ruby code in the shell, you lose.
Something like this may work, though:
render(:text => "<pre>" + CGI::escapeHTML(eval(" begin /home/luc/radrails/cpe/public/startq_test.rb #{syntf.path} rescue NoMethodError,SyntaxError,NameError,StandardError,SystemExit,ScriptError => snfault fltlog = File.open("/test/result/script.log", "w") fltlog.puts "#{snfault}" fltlog.close end
")) + "</pre>")
Make sure you check the values of syntf.path and snfault carefully before doing that.
Jeremy