Ответ 1
Взгляните на Treetop. Вы можете определить свою DSL как грамматику выражения Parsing Expression и затем проанализировать ее, чтобы создать свои правила в любом формате, который вам нравится.
Я ищу простой способ дать пользователям определение набора правил для фильтрации объектов.
Eg. пусть они определяют что-то вроде "сообщите мне о бронировании, если дата бронирования < 2009/04/30 И значение > 100,00"
Более или менее: я хотел бы иметь механизм правил Ruby с пользовательским DSL.
Есть ли библиотека, предлагающая это? Пришел через Ruleby, но он еще не поддерживает пользовательские DSL.
Какой лучший помощник для этого?
Взгляните на Treetop. Вы можете определить свою DSL как грамматику выражения Parsing Expression и затем проанализировать ее, чтобы создать свои правила в любом формате, который вам нравится.
Посмотрите на wongi-engine gem - это новый механизм правил, основанный на алгоритме Rete, который собирает справедливое внимание в последнее время.
Я точно не знаю, как и на каких объектах эти правила должны оцениваться, но если это модели ActiveRecord, возможно, Ambition было бы способ пойти. Это позволяет писать условия в рубине, например:
User.select { |m| m.name == 'jon' && m.age == 21 }
Это преобразуется в SQL, и вы получите всех пользователей, удовлетворяющих заданным критериям.