Ich danke euch allen für euer Feedback. Was ich daraus mitnehme: instance_exec 
(und instance_eval) sind potenziell gefährlich, weil im schlimmsten Fall 
schwierig zu findende Scoping-Bugs entstehen können -- aber sonst nicht weiter 
bedenklich (Performance etc.).

Für meine kleine DSL habe ich mich dazu entschieden, über das Abfragen von 
#arity beide DSL-Stile zu unterstützen (siehe 
<http://blog.grayproductions.net/articles/dsl_block_styles>.) Ob das eine gute 
oder bescheuerte Idee war, wird sich dann in der Praxis zeigen. Yeah, Praxis!

H.  

--  
Hendrik Mans: freier Entwickler und Berater. Moderne Webanwendungsentwicklung 
und alles, was dazu gehört.

http://www.mans.de :: +49-171-6858501 :: hend...@mans.de


On Monday, 7. May 2012 at 07:07, Michael Schuerig wrote:

> On Sunday 06 May 2012, Peter Schröder wrote:
> > 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
>  
>  
>  
> [...]
>  
> Wie wäre etwas in dieser Art:
>  
> class Scope
> def doit(context, &block)
> delegate_missing_to(context)
> copy_instance_vars(context, self)
> instance_eval(&block)
> copy_instance_vars(self, context)
> end
> end
>  
> Michael
>  
> --  
> Michael Schuerig
> mailto:mich...@schuerig.de
> http://www.schuerig.de/michael/
> _______________________________________________
> 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