我需要使用Ruby以编程方式验证给定的字符串是否是有效的Ruby语法。我想我可以做到这一点的一种方法是在EVAL语句中运行代码,并以此方式检测语法错误。
什么是更合适,更安全的方式来实现这一目标?
答案 0 :(得分:1)
让代码字符串为code
。标准方法是执行以下操作:
begin
RubyVM::InstructionSequence.compile(code)
nil
rescue Exception => e
... # Put code here to return `e` itself, print its message, or whatever you like
end
如果引发错误并且将其挽救,则该错误将显示语法错误。如果没有(并且返回nil
),则code
是语法上有效的Ruby代码(这并不保证它没有其他类型的错误)。
评论说这样做很危险,似乎没有道理。
答案 1 :(得分:0)
我考虑使用Opal-https://github.com/opal/opal
在浏览器中进行检查