¿Puedo obtener todas las rutas en mi aplicación de rieles? Necesito una salida como rake routes
y pongo el resultado en una matriz.¿cómo obtener todas las rutas en mi aplicación de rieles?
¿Es posible? ¿cómo?
¿Puedo obtener todas las rutas en mi aplicación de rieles? Necesito una salida como rake routes
y pongo el resultado en una matriz.¿cómo obtener todas las rutas en mi aplicación de rieles?
¿Es posible? ¿cómo?
Puede echar un vistazo a los rieles de camino que escupen las rutas de la tarea de rake. Está en /gems/rails/2.3.x/lib/tasks/routes.rake
para Rails 2. Parece que básicamente está haciendo ActionController::Routing::Routes.routes
en el caso general y luego lo interroga.
Para Rails 4 ahora está en la gema railties – Neikos
Bueno, independientemente de donde lo necesite, se puede hacer:
routes = `rake routes`.split("\n")
O incluso:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
Con el fin de difundir el dolor de cabeza que se fue a acomplish que, lo hice basado en @jordini respuesta:
Rails.application.routes.routes.to_a.each do |rota|
if rota.app.instance_variable_defined? '@defaults'
perm = Permission.where({
:acao => rota.defaults[:action],
:controller => rota.defaults[:controller],
:verbo => rota.verb.source.to_s.gsub("^","").gsub("$","").downcase
).first_or_create
end
end
Esto es lo que he usado para crear todos los permisos para mi página web a la vez.
¿Dónde necesita esta salida? – jordinl
Para Rails 3: 'Rails.application.routes.routes.to_a' (ver [mi respuesta original] (http://stackoverflow.com/a/10576105/407213)) – Dorian