Есть два безопасных способа сделать это: использовать eval с $SAFE
, установленным в 1 или выше (насколько высоко зависит от вашего приложения), или использовать специальный математический парсер. Я рекомендую второй метод (намного сложнее ошибиться), используйте метод eval, только если вам нужно больше, чем просто арифметическая оценка.
Для этого установите камень expression_parser
с gem install expression_parser
. Затем вы можете использовать следующий код для вычисления математического выражения:
require 'expression_parser'
parser = ExpressionParser::Parser.new
p p.parse("5 * 3")
Это распечатает 15.0
.