0
我正在尋找某種方式,在ruby代碼中使用它我應該能夠創建一個臨時文件,然後附加一些ruby代碼在那裏,然後將該臨時文件路徑傳遞給jruby -c以檢查是否有任何語法錯誤。使用jruby -c語法檢查檢查ruby/jruby腳本的語法
目前我正嘗試以下方法:
script_file = File.new("#{Rails.root}/test.rb", "w+")
script_file.print(content)
script_file.close
command = "#{RUBY_PATH} -C#{Rails.root}/test.rb"
eval(command);
new_script_file.close
當我檢查命令變種,它是正確顯示的JRuby -c {ruby文件路徑}。但是當我執行上面的代碼時,出現以下錯誤:
Completed 500 Internal Server Error in 41ms
SyntaxError ((eval):1: dhunknown regexp options - dh):
讓我知道是否有人對此有任何意見。
感謝, 院長
是的,我試過上面的方法也有,但是它並沒有給我上的可變輸出輸出的是未來終端,所以我做了以下更改: command =「#{RUBY_PATH} -c#{Rails.root} /test.rb」 test_output ='#{command} 2>&1' 以這種方式輸出在test_output變量中。 –
這是因爲jruby -c本身將其診斷消息輸出到錯誤流STDERR:默認情況下,所有先前的窗體只捕獲標準輸出(STDOUT)。如果你想直接捕獲錯誤流,你可以使用IO#popen:'IO.popen(command){| f | f.stderr.read}' – Eureka
以前的代碼不起作用:要實現這一點,可以使用Popen3:http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/ – Eureka