Pergunta
Eu estou procurando uma maneira simples de permitir que os usuários definir um conjunto de regras para objetos de filtro.
Por exemplo. deixá-los definir algo como "Notificar-me sobre uma reserva se a data de reserva <2009/04/30 E value> 100,00"
Mais ou menos:. Eu gostaria de ter um rubi mecanismo de regras com DSL personalizado
Existe uma oferta de biblioteca que? Deparei Ruleby, mas ele não suporta DSL costume, ainda.
Qual é a melhor apporach fazer isso?
Solução
Dê uma olhada Treetop . Você pode definir sua DSL como uma expressão de análise gramática e, em seguida, analisá-lo para criar suas regras em qualquer formato que você gosta.
Outras dicas
Tenha um olhar para o wongi-motor gem é um novo mecanismo de regras baseado no algoritmo Rete que está a ganhar um pouco de atenção ultimamente.
Eu não sei exatamente como e em quais objetos estas regras devem ser avaliadas, mas se estes são modelos ActiveRecord talvez ambição seria caminho a percorrer. Ele permite que você escreve condições em rubi, algo como:
User.select { |m| m.name == 'jon' && m.age == 21 }
Este é convertido em SQL e você vai ter todos os usuários correspondem aos critérios mencionados