我正在搜索某种方式,在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):
如果有人对此有任何想法,请告诉我。
谢谢, 迪安
答案 0 :(得分:1)
eval 将字符串计算为 Ruby代码,而不是命令行调用: 由于您的命令不是有效的Ruby语法,因此会出现此异常。
如果要在Ruby中启动命令,可以使用%x {}或``:
output1 =
ls
output2 =%x {ls}
如果要处理它,两个表单都将以String形式返回已启动命令的输出。如果要将此输出直接显示在用户终端中,可以使用system():
系统( “LS”)