méthode non définie `transform_keys 'chargement de Sidekiq web

24

Après la mise à jour des gemmes, il ne charge pas le site web sidekiq donnant l'erreur suivante:

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

Les gemmes qui ont été mises à jour étaient:

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

version ruby: ruby ​​2.6.0p0 (2018-12-25 révision 66547) [x86_64-linux]

Message d'erreur complet

rhugo
la source
1
Quelle version de Ruby et Ruby on Rails utilisez-vous?
spickermann
@spickermann demande parce que Hash # transform_keys a été ajouté au noyau Ruby assez récemment, dans la v2.5.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (2018-12-25 révision 66547) [x86_64-linux]
rhugo
@rhugo Pouvez-vous s'il vous plaît publier le message d'erreur complet, y compris la trace de pile et le code qui déclenche l'exception (voir trace de pile pour identifier où l'erreur se produit dans votre application).
spickermann
@spickermann J'ai ajouté une image avec le journal, cela ne me permet pas d'inclure autant de code dans le message
rhugo

Réponses:

36

Cela semble être un problème avec Rack 2.1.1. Cela fonctionne bien avec 2.0.8.

dolarsrg
la source
6
Il a été corrigé dans le Rack 2.1.2, qui vient d'être publié il y a quelques heures.
Mike A.
1
J'ai mis à jour le Rack 2.1.2 mais Sidekiq affiche des pages blanches. La rétrogradation à 2.0.8 le fait fonctionner à nouveau. Plus de problèmes ici: github.com/rack/rack/issues/1531
dolarsrg
8

Mise à jour: Rack 2.1.2 a été publié et il résout cette erreur

Maintenant, la solution s'assure que vous utilisez 2.1.2 ou supérieur.

bundle update rack

pourrait faire l'affaire pour vous en fonction du reste de votre Gemfile.


Ancienne réponse

Deux options pour résoudre ce problème.

  • Installez une version de travail précédente (recommandée). Cela installera la dernière version sur la branche 2.0.X:
gem 'rack', '~> 2.0.0'
  • Installez la version fixe à partir du référentiel git lui-même
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

Dans les deux cas, vous devez supprimer / remplacer cela par la version fixe appropriée une fois que cela se produit. Gardez une trace de https://github.com/rack/rack/pull/1428

jBilbo
la source
5

Pour moi, j'ai résolu ce problème en ajoutant cette ligne à Gemfile

gem 'rack', '2.0.7'

Si vous en avez Gemfile.locken local, vous pouvez le supprimer puis l'exécuter bundle install.

Si vous utilisez Capistrano, vous n'avez pas besoin de l'exécuter bundle installmanuellement, et Gemfile.lockil n'existe souvent pas dans votre référentiel.

voie
la source