undefinierte Methode `transform_keys 'beim Laden von Sidekiq web

24

Nach dem Aktualisieren von gems wird die sidekiq-Website nicht geladen, was den folgenden Fehler verursacht:

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

Die Edelsteine, die aktualisiert wurden, waren:

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

Ruby-Version: Ruby 2.6.0p0 (2018-12-25 Revision 66547) [x86_64-Linux]

Vollständige Fehlermeldung

Rhugo
quelle
1
Welche Version von Ruby und Ruby on Rails verwenden Sie?
Spickermann
@spickermann fragt, weil Hash # transform_keys vor relativ kurzer Zeit in Version 2.5 zum Ruby-Kern hinzugefügt wurde.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (25.12.2018, Revision 66547) [x86_64-linux]
Rhugo
@rhugo Können Sie bitte die vollständige Fehlermeldung einschließlich der Stapelverfolgung und des Codes, der die Ausnahme auslöst, veröffentlichen (siehe Stapelverfolgung, um festzustellen, wo der Fehler in Ihrer Anwendung auftritt).
Spickermann
@spickermann Ich habe ein Bild mit dem Protokoll hinzugefügt, es lässt mich nicht so viel Code in die Nachricht aufnehmen
Rhugo

Antworten:

36

Es scheint ein Problem mit Rack 2.1.1 zu sein. Es funktioniert gut mit 2.0.8.

dolarsrg
quelle
6
Es wurde in Rack 2.1.2 behoben, das erst vor ein paar Stunden veröffentlicht wurde.
Mike A.
1
Ich habe auf Rack 2.1.2 aktualisiert, aber Sidekiq rendert leere Seiten. Durch ein Downgrade auf 2.0.8 funktioniert es wieder. Weitere Probleme hier: github.com/rack/rack/issues/1531
dolarsrg
8

Update: Rack 2.1.2 wurde veröffentlicht und behebt diesen Fehler

Jetzt stellt die Lösung sicher, dass Sie 2.1.2 oder höher verwenden.

bundle update rack

könnte den Trick für Sie tun, abhängig vom Rest Ihrer Gemfile.


Alte Antwort

Zwei Möglichkeiten, um dies zu lösen.

  • Installieren Sie eine frühere Arbeitsversion (empfohlen). Dadurch wird die neueste Version auf dem Zweig 2.0.X installiert:
gem 'rack', '~> 2.0.0'
  • Installieren Sie die feste Version aus dem Git-Repository selbst
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

In beiden Fällen sollten Sie dies entfernen / durch die richtige feste Version ersetzen, sobald dies geschieht. Behalten Sie den Überblick über https://github.com/rack/rack/pull/1428

jBilbo
quelle
5

Für mich habe ich dieses Problem gelöst, indem ich diese Zeile hinzugefügt habe Gemfile

gem 'rack', '2.0.7'

Wenn Sie Gemfile.lockin lokal haben, können Sie es löschen und dann ausführen bundle install.

Wenn Sie Capistrano verwenden, müssen Sie nicht bundle installmanuell ausführen und sind Gemfile.lockhäufig nicht in Ihrem Repository vorhanden.

Fahrbahn
quelle