Пользовательский маршрут соответствует в разработке, но приводит к 404, в производстве

У меня есть следующее определение в моем route.rb

  match "/block/:name/:action" => proc { |env|
    #heavy magic happens here
  }

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

/block/reporting%2Fother%2Fexample/new?exampleable_id=23736&exampleable_type=Abc%3A%3ASomeType

отлично работает в режиме разработки, но в производстве я получаю "404 Not Found". Единственное различие между производственными URL-адресами и URL-адресами для разработчиков заключается в том, что в разработке используется http, а в рабочей - https. Я бы понял, если бы я написал ошибочный код в своем блоке процедур, но, ради бога, я не могу понять, почему он не подходит в производственной среде, когда он отлично работает в процессе разработки.

Любой намек на то, как отладить это, высоко ценится. На моей голове осталось не так много волос.

1 ответ

Решение

Я получил эту ошибку, даже если я наконец запустил проект в производственной среде на моей локальной машине. Дело в том, что мы не используем Тонкий в производстве. Мы используем пассажира. После того, как я наконец получил пассажира, работающего локально, мне удалось воссоздать ошибку.

Оказалось, что с пассажиром имя: в вышеупомянутом маршруте не интерпретировалось как "сообщающий%2Fother%2Fexample", но, возможно, как /block/ Reporting / other / example / new "с остальными несоответствующими, конечно.

Я исправил ошибку, заменив

match "/block/:name/:action"

в

match "/block/*name/:action"

Я надеюсь, что этот ответ на мой собственный вопрос поможет кому-то в будущем.

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