Ruby&规则引擎

时间:2009-05-04 14:05:11

标签: ruby rule-engine

我正在寻找一种简单的方法让用户定义一组规则来过滤对象。

EG。让他们定义类似“如果预订日期< 2009/04/30 AND值> 100.00”通知我预订

或多或少:我想拥有一个带有自定义DSL的Ruby规则引擎。

有图书馆提供吗?遇到过Ruleby,但它还不支持自定义DSL。

最好的办法是什么?

3 个答案:

答案 0 :(得分:5)

看一下wongi-engine gem,它是一个基于Rete算法的新规则引擎,最近引起了一些关注。

答案 1 :(得分:2)

看看Treetop。您可以将DSL定义为解析表达式语法,然后解析它以您喜欢的任何格式创建规则。

答案 2 :(得分:1)

我不确切地知道应该如何评估这些规则的对象和对象,但如果这些是ActiveRecord模型,那么Ambition可能会成为可能。它让你在ruby中写条件,如:

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

这将转换为SQL,您将获得满足给定条件的所有用户