2009-05-04 4 views
15

Je cherche un moyen simple de permettre aux utilisateurs de définir un ensemble de règles pour filtrer les objets.Ruby & Rules Engines

Par exemple. laissez-les définir quelque chose comme "informez-moi d'une réservation si la date de réservation < 2009/04/30 ET valeur> 100.00"

Plus ou moins: Je voudrais avoir un moteur de règles Ruby avec DSL personnalisé.

Y a-t-il une bibliothèque offrant cela? Entré dans Ruleby, mais il ne prend pas en charge DSL personnalisé, pour le moment.

Quelle est la meilleure solution pour faire cela?

Répondre

2

Jetez un oeil à Treetop. Vous pouvez définir votre DSL comme une grammaire d'expression syntaxique, puis l'analyser pour créer vos règles dans le format de votre choix.

+1

Salut merci pour la réponse. Treetop ressemble vraiment à une solution. Avez-vous un lien pour un site Web de meilleures pratiques peut-être? Difficile de trouver de bonnes choses sur le net. Je pensais à l'approche suivante: - Permettre aux utilisateurs de définir leurs règles - Parse ces utilisant arboricole - Créer un code Ruby basé sur ces règles - nourrir ceux-ci dans Ruleby - filtrer mes objets à l'aide du moteur de règles Est-ce que ce bruit est trop bizarre? – Matt

+0

Malheureusement, je n'ai pas eu beaucoup de chance de trouver des ressources sur Treetop non plus. Mais votre solution semble être la bonne approche. Bonne chance! –

1

Je ne sais pas exactement comment et sur quels objets ces règles devraient être évaluées, mais si ce sont des modèles ActiveRecord, peut-être que Ambition serait bien à faire. Ce qui vous permet d'écrire des conditions dans le rubis, quelque chose comme:

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

Ceci est converti en SQL et vous obtiendrez tous les utilisateurs répondant aux critères donnés

+0

Ca a l'air sympa mais il n'est plus entretenu. – pisaruk

4

Jetez un oeil à la perle wongi-engine est une nouvelle règles moteur basé sur l'algorithme Rete qui recueille un peu d'attention ces derniers temps.