Błąd logowania SessionsController#new


#1

Witam,
Pod kliknięciu w formularz logowania nie przenosi do formularza tylko wywala błąd:


Natomiast odpalając ten sam projekt na windows i nie modyfikując nic kodu to formularz i samo logowanie działa prawidłowo. Ktoś wie jak to można naprawić?


#2
prepend_before_filter(only: [:create, :destroy]) { ... }

#3

@michal_p Da się to jakoś szybko naprawić ? Szukając w google proponowali uzyć:
bundle show device
ale w Gemfile nie było:
gem ‘device’
więc dodałem i przeinstalowałem
bundle show device
potem:
bundle install
uruchomiłem serwer i dalej to samo.
Dlaczego na windowsie działa prawidłowo chociaż jest ten samo kod?
Może inna wersja Ruby naprawi problem?


#4

W Ruby 2.4 ta składnia przechodzi, w 2.5 już nie. Masz 2 wyjścia:

  • poprawić kod tak jak zasugerował @michal_p
  • używać konsekwentnie wersji 2.4 na obu systemach

Polecam zastosować się do obu gdyż w przyszłości możesz chcieć zrobić aktualizację Rubiego a już teraz wiesz, że Twój kod nie będzie działać. No chyba, że tylko odpalasz cudzy kod wtedy wystarczy wersja 2.4 Rubiego.

$ cat syntax.rb
prepend_before_filter only: [:create, :destroy] { request.env["devise.skip_timeout"] = true }
$ RBENV_VERSION=2.4 ruby -vc syntax.rb
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
Syntax OK
$ RBENV_VERSION=2.5 ruby -vc syntax.rb
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin17]
syntax.rb:1: syntax error, unexpected '{', expecting end-of-input
...ter only: [:create, :destroy] { request.env["devise.skip_tim...
...

#5

Dziękuje za pomoc. Na wersji 2.4.1 działa prawidłowo