使用Ruby

时间:2018-11-19 17:01:30

标签: ruby validation syntax

我需要使用Ruby以编程方式验证给定的字符串是否是有效的Ruby语法。我想我可以做到这一点的一种方法是在EVAL语句中运行代码,并以此方式检测语法错误。

什么是更合适,更安全的方式来实现这一目标?

2 个答案:

答案 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

在浏览器中进行检查