使用jruby -c语法检查检查ruby / jruby脚本的语法(在ruby代码中)

时间:2012-09-13 11:22:39

标签: ruby-on-rails ruby file-io jruby eval

我正在搜索某种方式,在ruby代码中使用它我应该能够创建一个临时文件,然后在其中附加一些ruby代码,然后将该临时文件路径传递给jruby -c以检查是否有任何语法错误。

目前我正在尝试以下方法:

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

当我检查命令var时,它正确显示jruby -c {ruby文件路径}。但是当我执行上面的代码时,我收到以下错误:

  

在41毫秒内完成500内部服务器错误

     

SyntaxError((eval):1:dhunknown regexp options - dh):

如果有人对此有任何想法,请告诉我。

谢谢, 迪安

1 个答案:

答案 0 :(得分:1)

eval 将字符串计算为 Ruby代码,而不是命令行调用: 由于您的命令不是有效的Ruby语法,因此会出现此异常。

如果要在Ruby中启动命令,可以使用%x {}或``:

  

output1 = ls

     

output2 =%x {ls}

如果要处理它,两个表单都将以String形式返回已启动命令的输出。如果要将此输出直接显示在用户终端中,可以使用system():

  

系统( “LS”)