Обновление Ruby-разрывов перед фильтрами в Rails (Devise, Pundit) - PullRequest
0 голосов
/ 03 марта 2019

Я запускаю приложение Rails, которое после обновления версии Ruby до 2.5.1, а также 2.6.0 перестало работать.Я заметил, что это как-то связано с передачей блока в обратных вызовах контроллера:

prepend_before_filter only: [:create, :destroy] { request.env["devise.skip_timeout"] = true }

завершается с ошибкой:

syntax error, unexpected '{', expecting keyword_end
...ter only: [:create, :destroy] { request.env["devise.skip_tim

Моя настройка:

devise (4.6.1)
rails 5.0.7
ruby 2.5.1
pundit 2.0.1

Я обновил версию Ruby, которую я использовал, до версии 2.6.0, и у меня возникла проблема, затем я перешел на 2.5.1, и проблема все еще сохраняется

Я также обнаружил, что эти два потока обсуждают похожую проблему.: https://github.com/plataformatec/devise/issues/4703 Rails 4 before_action, передать параметры вызываемому методу

Я обновил Devis и Pundit, но безуспешно: \

1 Ответ

0 голосов
/ 03 марта 2019

Я бы предложил заменить prepend_before_filter, который устарел, на prepend_before_action и использовать скобки

 prepend_before_action(only: [:create, :destroy]) { request.env["devise.skip_timeout"] = true }

или использовать синтаксис блока do ... end

prepend_before_action only: [:create, :destroy] do 
  request.env["devise.skip_timeout"] = true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...