0

我正在寻找某种方式,使用它在 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):

让我知道是否有人对此有任何想法。

谢谢,院长

4

1 回答 1

1

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

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

输出1 =ls

输出 2 = %x{ls}

如果您想处理它,这两种形式都会将启动命令的输出作为字符串返回。如果您希望此输出直接显示在用户终端中,可以使用 system():

系统(“ls”)

于 2012-09-13T12:18:17.527 回答