Je suis en train d'écrire un DSL qui me permet de faireRuby Métaprogrammation
Policy.name do
author "Foo"
reviewed_by "Bar"
end
Le code suivant peut presque le traiter:
class Policy
include Singleton
def self.method_missing(name,&block)
puts name
puts "#{yield}"
end
def self.author(name)
puts name
end
def self.reviewed_by(name)
puts name
end
end
Définir ma méthode que les méthodes de classe (self.method_name) je peux y accéder en utilisant la syntaxe suivante:
Policy.name do
Policy.author "Foo"
Policy.reviewed_by "Bar"
end
Si je supprime le "self" des noms de méthodes, et essaie de utiliser ma syntaxe désirée, puis je reçois une erreur "Méthode non trouvée" dans le Main afin qu'elle ne trouve pas ma fonction avant le module Kernel. C'est ok, je comprends l'erreur. Mais comment puis-je le réparer? Comment puis-je réparer ma classe pour qu'elle fonctionne avec ma syntaxe désirée?
salut Août, je joue avec la métaprogrammation ruby et votre exemple + explication m'a beaucoup aidé. StackOverflow Règles !! –