On Monday 26 November 2007, Benjamin Lutz wrote:
> Hi!
>
> Ich habe mich hier an etwas Metaprogramming versucht und bin auf ein
> Problem mit Rails gestoßen. Ein Auszug aus meinem AdminController:
>
> require "admin/[EMAIL PROTECTED]"
>
> self.class.instance_eval do
>     include("Admin::[EMAIL PROTECTED]".constantize)
>     # Bitte an dieser Stelle keine Hinweise auf Validierung und
> Sicherheit... :) end
>
> Geladen wird hier ein Modul aus einer externen Datei, z.B.:
>
> module Admin::BlaBla
>     def muh
>     end
> end
>
> An für sich funktioniert das ja auch wunderbar, zumindestens lokal...

Was funktioniert denn? Mir ist nicht klar, was du überhaupt erreichen 
möchtest.

Wenn du mehrere Controller haben willst, die im Wesentlichen das Gleiche 
tun, dann hast du zwei grundsätzliche Möglichkeiten: leite die 
Controller von einander ab, ober -- schöner -- pack die Gemeinsamkeiten 
in ein Modul und include das in beide Controller.

Wenn es systematische Zusammenhänge zwischen den normalen Controllern 
und ihren Admin-Varianten gibt, ist Metaprogrammierung vermutlich 
sinnvoll. Allerdings bist du da mit instance_eval sehr wahrscheinlich 
auf dem falschen Weg; der liegt eher in Richtung class_eval.

Michael

-- 
Michael Schuerig
mailto:[EMAIL PROTECTED]
http://www.schuerig.de/michael/
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an