© 2021 WebHive

Странный баг с redirect_to в Rails

Словил пренеприятнейший баг. В контроллере при вызове метода redirect_to начинался рендеринг экшена location, что вызывало ошибку в запросе.

Вскрытие показало, что виновата таки рельса.

1
2
3
4
5
6
def redirect_to(options = {}, response_status = {}) #:doc:
...
self.location = _compute_redirect_to_location(options)
...
end

Ну кто бы мог догадаться, что redirect_to использует переменную контроллера с именем location.

Самое неприятное, что как оказалось разработчики rails с проблемой уже знакомы, но не считают её багом.

В общем вывод таков — есть еще одно зарезервированное слово в rails использовать которое в качестве экшена не стоит. Имя ему — location

Комментарии