Ruby & Rules Engines

Szukam prostego sposobu na zdefiniowanie przez użytkowników zestawu reguł filtrowania obiektów.

Np. niech zdefiniują coś w stylu "Powiadom mnie O rezerwacji, jeśli data rezerwacji 100.00"

Mniej więcej: chciałbym mieć silnik Ruby rules z niestandardowym DSL.

Czy jest taka biblioteka? Natknąłem się na Ruleby, ale nie obsługuje jeszcze niestandardowego DSL.

Jak najlepiej to zrobić?

Author: Tshepang, 2009-05-04

3 answers

Spójrz na Treetop . Możesz zdefiniować DSL jako gramatykę wyrażeń Parsujących, a następnie przetworzyć ją, aby utworzyć reguły w dowolnym formacie.

 2
Author: Ian Terrell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-04 21:15:35

Spójrz na wongi-engine gem jest to nowy silnik reguł oparty na algorytmie Rete, który zbiera ostatnio sporo uwagi.

 4
Author: cwadding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-17 16:51:12

Nie wiem dokładnie jak i na jakich obiektach te reguły powinny być oceniane, ale jeśli są to modele ActiveRecord to może Ambition byłoby do zrobienia. Pozwala na zapisanie warunków w Rubim, coś w stylu:

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

To zostanie przekonwertowane na SQL i otrzymasz wszystkich użytkowników spełniających podane kryteria

 1
Author: esad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-05 03:50:16