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
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an