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