ruby on rails - restful - Listado de "rutas de rake" para un motor Rails 3.1 montable
routes in ruby on rails (6)
En caso de que a la gente le falte en los comentarios, a partir de Rails 3.2.2
, ahora puede usar
$ rake app:routes
Estoy trabajando en un motor montable para usar con Rails 3.1, y quiero enumerar las rutas del motor.
Creé el motor usando:
$ rails plugin new rails_blog_engine --mountable
Y editó el archivo ''test / dummy / config / route'' para leer:
Rails.application.routes.draw do
mount RailsBlogEngine::Engine => "/blog"
end
... y ''config / route'' para leer:
RailsBlogEngine::Engine.routes.draw do
resources :posts
end
Quiero enumerar las rutas generadas para '': posts'', pero no está claro cómo puedo hacer esto. Cuando ejecuto ''aplicación rake: rutas'', solo obtengo la ruta "/ blog":
$ rake app:routes
rails_blog_engine /blog {:to=>RailsBlogEngine::Engine}
Cuando ejecuto "rutas de rake", aparece un error:
$ rake routes
rake aborted!
Don''t know how to build task ''routes''
¿Cómo puedo ver las rutas para '': posts''? ¿Puedo hacer esto sin reescribir las tareas de rake relevantes?
En los rieles 3.2X Si está en su "host_app" y ha montado un motor, probablemente podría enumerar las rutas ejecutando (debería funcionar fuera de la caja):
bundle exec rake engine_name:routes
Para los rieles del motor 3.x, las rake routes
no funcionan bajo la raíz del motor (es por eso que necesita un poco de copia al copiar el archivo de rake). Sin embargo, las rake routes
funcionan bajo prueba / dummy (o spec / dummy si se usa rspec). Enumera todas las rutas que pertenecen al motor en desarrollo y otros motores montados.
Para rieles 3
desc ''Print out all defined routes inside engine match order, with names. Target specific controller with CONTROLLER=x.''
task engine_routes: :environment do
Rails.application.reload_routes!
app = ENV[''ENGINE''] || "Rails.application"
all_routes = app.constantize.routes.routes
require ''rails/application/route_inspector''
inspector = Rails::Application::RouteInspector.new
puts inspector.format(all_routes, ENV[''CONTROLLER'']).join "/n"
end
Rieles 4
desc ''Print out all defined routes inside engine match order, with names. Target specific controller with CONTROLLER=x.''
task engine_routes: :environment do
app = ENV[''ENGINE''] || "Rails.application"
all_routes = app.constantize.routes.routes
require ''action_dispatch/routing/inspector''
inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
puts inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, ENV[''CONTROLLER''])
end
Entonces puedes llamar como
$rake engine_routes ENGINE="IssueTracker::Engine"
Si copia código de la tarea de rutas de rake de Rails 3.1.0 en su Rakefile y cambia la parte superior para leer:
task :routes => ''app:environment'' do
Rails.application.reload_routes!
all_routes = RailsBlogEngine::Engine.routes.routes
... reemplazando RailsBlogEngine con el nombre de su motor, entonces puede obtener una lista rudimentaria de rutas ejecutando:
rake routes
Tenga en cuenta que en Rails 3.1.1 y versiones posteriores, necesitará una versión más reciente de la tarea de rutas de rake .
en Rails 5, podría obtener las rutas del motor usando el siguiente comando:
bundle exec rake app:routes