hi hendrik, instance_exec hab ich zwar noch nie benutzt, aber dafür schon diverse probleme mit instance_eval gehabt.
pascal hat das problem mit dem scope schön beschrieben. wenn man das aus der sicht des dsl-benutzenden darstellen möchte, dann sollte man sich vergegenwärtigen, dass es schwer zu ersehen ist, ob die sachen, die man im block (der "closure") verwendet denn tatsächlich die sind, die man erwartet, der zugriff auf methoden ist nicht transparent: class Scope def self.doit(&block) instance_eval(&block) end end def moin "moin" end Scope.doit { puts moin } # => moin class Scope def self.moin "fail" end end Scope.doit { puts moin } # => fail ahoi Am 06.05.2012 um 11:36 schrieb Hendrik Mans: > Einen wundervollen Sonntagmorgen euch allen. > > Ich experimentiere aus Spaß an der Freude, und weil ich dieses Wochenende > Strohwitwer und zum Spazierengehen zu faul und langweilig bin, mit > verschiedenen DSL-Implementierungs-Ansätzen herum. Ja, ich weiß, eigentlich > sollte ich raus gehen und ein Eis essen oder mich mit Freunden treffen oder > wenigstens ein gutes Buch lesen, aber so ist halt mein Leben. Ruby ist mein > Freund, method_missing meine Eiskrem, und… ach, ich schweife ab. > > Jedenfalls kommt dabei gerne mal instance_exec zum Einsatz. instance_exec ist > superdipupertoll. Es führt einen Block/Proc/lambda/etc. in einem anderen als > dem ursprünglichen Scope aus. Praktisch! Aber ich stolpere immer wieder über > Blogartikel/Tweets/Seniorarchitekten, die instance_exec voll doof finden. Nur > leider immer ohne schlüssige Erklärung. > > Ist von euch vielleicht jemand der größte Meta-Programmer aller Zeiten und > kann da etwas Licht drauf werfen? Ist instance_exec eine schlechte Idee? Wenn > ja, warum, und: wie macht man's sonst? > > Freue mich auf Input. INPUT INPUT INPUT. > > H. > _______________________________________________ > rubyonrails-ug mailing list > rubyonrails-ug@headflash.com > http://mailman.headflash.com/listinfo/rubyonrails-ug _______________________________________________ rubyonrails-ug mailing list rubyonrails-ug@headflash.com http://mailman.headflash.com/listinfo/rubyonrails-ug