2009-05-04 8 views
15

Estoy buscando una manera simple de permitir a los usuarios definir un conjunto de reglas para filtrar objetos.Ruby & Rules Engines

Por ejemplo. permítales definir algo así como "notifíqueme sobre una reserva si la fecha de reserva es < 2009/04/30 Y valor> 100.00"

Más o menos: me gustaría tener un motor de reglas Ruby con DSL personalizado.

¿Hay una biblioteca que ofrece eso? Encontré Ruleby, pero aún no es compatible con DSL personalizado.

¿Cuál es la mejor recomendación para hacer eso?

Respuesta

2

Eche un vistazo a Treetop. Puede definir su DSL como una gramática de expresión de análisis y luego analizarla para crear sus reglas en el formato que desee.

+1

Hola gracias por la respuesta. Treetop realmente parece una solución. ¿Tiene un enlace para cualquier sitio web de mejores prácticas, tal vez? Es difícil encontrar cosas buenas en la red. estaba pensando en el siguiente enfoque: - permitir a los usuarios definir sus reglas - Analiza estas usando copa de árbol - Crear código Ruby en base a estas reglas - alimentar estos en Ruleby - filtrar mis objetos utilizando el motor de reglas ¿El ese sonido demasiado raro? – Matt

+0

Desafortunadamente, tampoco he tenido mucha suerte para encontrar recursos en Treetop. Pero su solución suena como el enfoque correcto. ¡La mejor de las suertes! –

1

No sé exactamente cómo y en qué objetos se deben evaluar estas reglas, pero si se trata de modelos de ActiveRecord quizás Ambition sería un camino por recorrer. Nos dejó usted escriben condiciones de rubí, algo así como:

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

Esto se convierte a SQL y obtendrá todos los usuarios de la satisfacción de los criterios dados

+0

Se ve bien, pero ya no se mantiene. – pisaruk

4

Tener un vistazo a la wongi-engine joya es una nueva normativa motor basado en el algoritmo Rete que está recabando bastante atención últimamente.