Moin Hendrik,

was mir spontan einfällt ist dass instance_eval (und instance_exec) nicht immer 
ganz intuitiv sind wenn man a) damit nicht vertraut ist und b) eine "echte" 
closure erwartet.

instance_eval behält zwar den scope für lokale Variablen bei, verändert 
allerdings auch self und den default definee zum Receiver object bezw. dessen 
Eigenclass. Stell dieses verhalten dem (den meisten von uns sicher weitaus 
vertrauteren) Verhalten von Blöcken die ge-yielded (wtfdenglish) werden 
entgegen und du hast den einen oder anderen der deinen Code liest unter 
umständen schon abgehängt oder zumindest eine Zeit lang mit jagen von "Bugs" 
die er nicht auf Anhieb versteht beschäftig.

Clever ist doof und stumpf ist Trumpf. Ich würd's halt vermeiden wenn sich ein 
anderer, weniger smarter, Weg bietet. Manchmal reicht das ja schon um was als 
nicht empfehlenswert einzustufen.

achja, guckst du hier: http://yugui.jp/articles/846  

--  
Pascal Friederich

Twitter: http://twitter.com/paukul - @paukul
XING: https://www.xing.com/profile/Pascal_Friederich


On Sunday, May 6, 2012 at 11:36 AM, Hendrik Mans wrote:

> 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 (mailto: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

Antwort per Email an