niezdefiniowana metoda `transform_keys 'ładująca sieć Sidekiq

24

Po zaktualizowaniu klejnotów nie ładuje strony sidekiq, co powoduje następujący błąd:

NoMethodError (undefined method `transform_keys' for <ActionDispatch::Request::Session:0x00005568df2a8710>):

Klejnoty, które zostały zaktualizowane to:

selenium-webdriver 3.142.7
rack-protection 2.0.8.1
mime-types 3.3.1
 mini_magick 4.10.1
image_processing 1.10.3
groupdate 4.3.0
friendly_id 5.3.0
faraday 0.17.3
http 4.3.0
public_suffix 4.0.3
rack 2.1.1
crass 1.0.6
i18n 1.7.1
minitest 5.14.0

wersja ruby: ruby ​​2.6.0p0 (wersja 12.12.2018 66547) [x86_64-linux]

Pełny komunikat o błędzie

rhugo
źródło
1
Jakiej wersji Ruby i Ruby on Rails używasz?
spickermann
@spickermann pyta, ponieważ Hash # transform_keys został niedawno dodany do rdzenia Ruby w wersji 2.5.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (2018-12-25 wersja 66547) [x86_64-linux]
rhugo
@rhugo Czy możesz zamieścić pełny komunikat o błędzie, w tym ślad stosu i kod, który wyzwala wyjątek (zobacz śledzenie stosu, aby zidentyfikować miejsce wystąpienia błędu w aplikacji).
spickermann
@spickermann Dodałem obraz z logiem, nie pozwala mi to na
dodanie

Odpowiedzi:

36

Wygląda na to, że jest to problem z Rack 2.1.1. Działa dobrze z 2.0.8.

dolarsrg
źródło
6
Zostało to naprawione w Rack 2.1.2, który został właśnie wydany kilka godzin temu.
Mike A.
1
Zaktualizowałem do Rack 2.1.2, ale Sidekiq renderuje puste strony. Obniżenie do wersji 2.0.8 powoduje, że znów działa. Więcej problemów tutaj: github.com/rack/rack/issues/1531
dolarsrg
8

Aktualizacja: Rack 2.1.2 został wydany i rozwiązuje ten błąd

Teraz rozwiązaniem jest upewnienie się, że używasz wersji 2.1.2 lub nowszej.

bundle update rack

może załatwić sprawę w zależności od reszty twojego Gemfile.


Stara odpowiedź

Dwie opcje, aby rozwiązać ten problem.

  • Zainstaluj poprzednią wersję roboczą (zalecane). Spowoduje to zainstalowanie najnowszej wersji w oddziale 2.0.X:
gem 'rack', '~> 2.0.0'
  • Zainstaluj poprawioną wersję z samego repozytorium git
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

W obu przypadkach powinieneś usunąć / zastąpić to odpowiednim poprawionym wydaniem, gdy to nastąpi. Śledź https://github.com/rack/rack/pull/1428

jBilbo
źródło
5

Dla mnie rozwiązałem ten problem, dodając ten wiersz do Gemfile

gem 'rack', '2.0.7'

Jeśli masz Gemfile.locklokalny, możesz go usunąć, a następnie uruchomić bundle install.

Jeśli używasz Capistrano, nie musisz uruchamiać bundle installręcznie i Gemfile.lockczęsto nie istnieje w twoim repozytorium.

Pas ruchu
źródło