Двигатели Ruby & Rules

Я ищу простой способ дать пользователям определение набора правил для фильтрации объектов.

Eg. пусть они определяют что-то вроде "сообщите мне о бронировании, если дата бронирования < 2009/04/30 И значение > 100,00"

Более или менее: я хотел бы иметь механизм правил Ruby с пользовательским DSL.

Есть ли библиотека, предлагающая это? Пришел через Ruleby, но он еще не поддерживает пользовательские DSL.

Какой лучший помощник для этого?

Ответы

Ответ 1

Взгляните на Treetop. Вы можете определить свою DSL как грамматику выражения Parsing Expression и затем проанализировать ее, чтобы создать свои правила в любом формате, который вам нравится.

Ответ 2

Посмотрите на wongi-engine gem - это новый механизм правил, основанный на алгоритме Rete, который собирает справедливое внимание в последнее время.

Ответ 3

Я точно не знаю, как и на каких объектах эти правила должны оцениваться, но если это модели ActiveRecord, возможно, Ambition было бы способ пойти. Это позволяет писать условия в рубине, например:

User.select { |m| m.name == 'jon' && m.age == 21 }

Это преобразуется в SQL, и вы получите всех пользователей, удовлетворяющих заданным критериям.