Решение предлагается выше, но объяснение состоит в том, что redirect
запускает браузер перенаправления, поэтому каждый раз процесс начинается снова при запуске.Для использования перенаправления на стороне сервера используйте call
.Начиная с документов :
Запуск другого маршрута
Иногда передача - это не то, что вам нужно, вместо этого вы хотели бы получить результат вызова другого маршрута.Для этого просто используйте call:
get '/foo' do
status, headers, body = call env.merge("PATH_INFO" => '/bar')
[status, headers, body.map(&:upcase)]
end
get '/bar' do
"bar"
end
Обратите внимание, что в приведенном выше примере вы упростили бы тестирование и повысили производительность, просто переместив "bar" в помощника, используемого обоими / fooи /bar.
Если вы хотите, чтобы запрос отправлялся в тот же экземпляр приложения, а не в дубликат, используйте call!вместо вызова.
Ознакомьтесь со спецификацией стойки, если вы хотите узнать больше о вызове.
Следовательно, вам, вероятно, нужен помощник (или, более вероятно, условие ), если вы проверяете аутентификацию).