Как я могу получить доступ к именованным маршрутам в Rails Sweeper?

У меня есть уборщик, который нагревает кэш, открывая URL-адреса в разветвленных процессах. Достаточно просто запрограммировать хост для этих URL, но я хочу, чтобы он динамически изменялся в зависимости от среды.

Я знаю, что могу установить для этого глобальные переменные / переменные среды, но мне бы очень хотелось использовать именованные маршруты. Есть какой-либо способ сделать это?

(Я должен уточнить, что я пытался просто поместить туда именованные маршруты, но они не разрешаются во время выполнения.)

2 ответа

Решение

Ближайшее, что я нашел, это:

Rails.application.routes.named_routes.get(:user).defaults

Который восстанавливает:

{:action=>"show", :controller=>"users"}

Но вы должны объединить его с вашими параметрами:

Rails.application.routes.named_routes.get(:user).defaults.merge({:id => 1})

Результат:

{:action=>"show", :controller=>"users", :id=>1}

Редактировать:

Просто добавь

include Rails.application.routes.url_helpers 

в ваш класс

Я исправил это в текущей бета-версии Rails 3.2:

https://github.com/rails/rails/pull/3876

Другие вопросы по тегам