2010-11-11 4 views
1

Cette question est en quelque sorte une extension de ce qui a été élevé dans cette discussion: How to programmatically list all controllers in RailsComment lister par programme tous les contrôleurs et actions dans les moteurs RoR?

Il semble que la plupart des solutions pour l'inscription sur les contrôleurs et les actions d'une application utilise l'importation et l'analyse syntaxique # {RAILS_ROOT}/app/contrôleurs.

J'ai construit et utiliser des moteurs RoR qui sont en # {RAILS_ROOT}/fournisseurs/plugins/

Comment pourrait-être inclus à la liste des contrôleurs et des actions de chaque moteur?

Répondre

0

C'est assez vieux, et des rails 3 a changé beaucoup de choses. J'ai dû passer par 3 façons différentes de faire cela comme les choses ont changé. Actuellement sur les rails 3.2.2 ceci a été ma meilleure solution:

Rails.application.reload_routes! 
all_routes = Rails.application.routes.routes 

require 'rails/application/route_inspector' 
inspector = Rails::Application::RouteInspector.new 
for routeRule in inspector.format(all_routes, ENV['CONTROLLER']) 
    # Parse routeRule to get your values 
end 
+0

Salut, j'ai Rails constant non initialisé :: Application :: RouteInspector en mode production. –

2

Bizarre comment écrire simplement une question peut vous aider à le comprendre. J'ai pu obtenir ce travail en incluant simplement les contrôleurs du moteur en lançant:

Find.find(File.join(RAILS_ROOT, 'vendor/plugins/')) { |name| 
    require_dependency(name) if /_controller\.rb$/ =~ name 
} 
+0

Find.find? Est-ce correct? – Aravind

Questions connexes