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