Подтвердить что ты не робот

Список "рейк-маршрутов" для монтируемого Rails 3.1-движка

Я работаю над монтируемым движком для использования с Rails 3.1, и я хочу перечислить маршруты двигателей.

Я создал движок, используя:

$ rails plugin new rails_blog_engine --mountable

И отредактировал файл 'test/dummy/config/routes' для чтения:

Rails.application.routes.draw do
  mount RailsBlogEngine::Engine => "/blog"
end

... и 'config/routes' для чтения:

RailsBlogEngine::Engine.routes.draw do
  resources :posts
end

Я хочу перечислить маршруты, сгенерированные для ': posts', но не ясно, как я могу это сделать. Когда я запускаю "rake app: routes", я получаю только маршрут "/blog":

$ rake app:routes
rails_blog_engine    /blog    {:to=>RailsBlogEngine::Engine}

Когда я запускаю "маршруты рейка", я получаю сообщение об ошибке:

$ rake routes
rake aborted!
Don't know how to build task 'routes'

Как я могу увидеть маршруты для: сообщений? Могу ли я сделать это, не переписывая соответствующие задачи рейка?

4b9b3361

Ответ 2

В случае, если люди не замечают этого в комментариях, начиная с Rails 3.2.2, вы можете использовать

$ rake app:routes

Ответ 3

Для движка rails 3.x rake routes не работает под корневым корнем (для чего ему нужен хак, копируя файл рейка). Однако rake routes работает под тестом/манекеном (или spec/dummy при использовании rspec). В нем будут перечислены все шаблоны, которые принадлежат двигателю разработки и другим установленным двигателям.

Ответ 4

Для рельсов 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

Рельсы 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

Затем вы можете позвонить как

 $rake engine_routes ENGINE="IssueTracker::Engine"

Ответ 5

в Rails 5, я мог бы получить маршруты двигателя, используя следующую команду:

bundle exec rake app:routes

Ответ 6

В рельсах 3.2X Если вы находитесь в "host_app" и монтируете движок, вы можете, вероятно, перечислить маршруты, выполнив (должен работать из коробки):

bundle exec rake engine_name:routes