RoR: Enumerare i controller presenti

Salve a tutti,
sto cercando se esiste un metodo in Rails per enumerare i controllers
presenti nella applicazione. In pratica devo predisporre una specie di
RBAC con una interfaccina di amministrazione, per limitare ad alcuni
utenti l’uso di determinati controller. Oltre al codice di convalida
della
RBAC ho scritto un modulino da includere nei controller da “proteggere”
che mi espone dei metodi per dirmi se il controller è sottoposto a RBAC,
il nome dell’applicazione che gestisce (per questo progetto ho assunto
che
controller => applicazione, ma è solo una convenzione per gli utenti) e la
versione. Solo che per l’interfaccia di gestione avrei bisogno di
enumerare i controller presenti, per ognuno chiamare il metodo che mi
ritorna i dati quindi comporre la pagina web.

Qualche suggerimento…?

Davide

Forse puoi tirarti fuori i controller con qualcosa tipo:

@controllers = []
ObjectSpace.each_object(ApplicationController) {|c| @controllers << c}

Ma non ho provato se va :smiley:

On 8/30/06, Davide B. [email protected] wrote:

versione. Solo che per l’interfaccia di gestione avrei bisogno di
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Another point of view

[email protected]

Il 30/08/06, Davide B.[email protected] ha scritto:

Qualche suggerimento…?

Magari è una castronata ma ci provo: se usi Class.subclasses [1] di
ruby facets[2] sulla classe ActionController::Base [3] dovrebbe
funzionare

PS: negli archivi c’è un post di paolo donà che ti mostra come usare
subclasses
(si intitola ‘FacetsTip #1: Class.subclasses’)

[1] http://facets.rubyforge.org/api/core/classes/Class.html#M000232
[2] http://facets.rubyforge.org/
[3] ActionController::Base


Michele F.
SeeSaw | Another point of view

[email protected]

— Paolo Donà [email protected] ha scritto:

Forse puoi tirarti fuori i controller con qualcosa
tipo:

@controllers = []
ObjectSpace.each_object(ApplicationController) {|c|
@controllers << c}

Ma non ho provato se va :smiley:

questo ritornerebbe le istanze, che non penso sia
quello che si vuole.
Ho l’impressione che si crechino le sottoclassi, per
cui andrebbe forse una cosa come:
ObjectSpace.each_object(Class) {|c| @controllers << c
if c.ancestors.include?(ApplicationController)}

(o Class#subclasses in facets)


icq: #69488917
blog it: http://riffraff.blogsome.com
blog en: http://www.riffraff.info

p4.vert.ukl.yahoo.com uncompressed/chunked Wed Aug 30 11:13:48 GMT 2006


Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it