Журнал использования маршрута по умолчанию в рельсах - PullRequest
6 голосов
/ 09 марта 2012

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

Итак, учитывая, что в моем файле config/routes.rb есть следующая строка маршрута по умолчанию.

match '/:controller(/:action(/:id))'

Как я могу создать или получить журнал каждый раз, когда маршрут попадает.Этот журнал в идеале должен включать только запросы, фактически обработанные этим маршрутом, наряду с параметрами, и сам маршрут должен работать как обычно.

Ответы [ 2 ]

8 голосов
/ 04 мая 2014

Еще одна возможность - использовать опцию Rails router constraints:

match '/:controller(/:action(/:id))', constraints: -> (req) {
  Rails.logger.info("Default route used: #{req.path.inspect}")
  true
}

Примечание: лямбда возвращает true, чтобы совпадение было успешным.

7 голосов
/ 09 марта 2012

Один из способов сделать это - изменить маршрут по умолчанию на:

match ':controller(/:action(/:id))(.:format)', :using_default_route => true

Затем поместите следующую функцию в app/controllers/application_controller.rb

before_filter do
  if params[:using_default_route]
    logger.info("Default route for #{request.path.inspect}. params = #{params.inspect}")
  end
end
...