método indefinido `transform_keys 'cargando la web Sidekiq

24

Después de actualizar gemas, no carga el sitio web de sidekiq dando el siguiente error:

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

Las gemas que se actualizaron fueron:

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

versión ruby: ruby ​​2.6.0p0 (revisión 2018-12-25 66547) [x86_64-linux]

Mensaje de error completo

rhugo
fuente
1
¿Qué versión de Ruby y Ruby on Rails usas?
Spickermann
@spickermann pregunta porque Hash # transform_keys se agregó recientemente al núcleo de Ruby, en v2.5.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (2018-12-25 revisión 66547) [x86_64-linux]
rhugo
@rhugo ¿Puede publicar el mensaje de error completo, incluido el seguimiento de la pila y el código que activa la excepción (consulte el seguimiento de la pila para identificar dónde se produce el error en su aplicación)
Spickermann
@spickermann Agregué una imagen con el registro, no me permite incluir tanto código en el mensaje
rhugo

Respuestas:

36

Parece ser un problema con Rack 2.1.1. Funciona bien con 2.0.8.

dolarsrg
fuente
66
Se ha solucionado en Rack 2.1.2, que se lanzó hace un par de horas.
Mike A.
1
He actualizado a Rack 2.1.2 pero Sidekiq muestra páginas en blanco. La degradación a 2.0.8 hace que vuelva a funcionar. Más problemas aquí: github.com/rack/rack/issues/1531
dolarsrg
8

Actualización: Rack 2.1.2 ha sido lanzado y resuelve este error

Ahora la solución es asegurarse de usar 2.1.2 o superior.

bundle update rack

podría hacer el truco para ti dependiendo del resto de tu Gemfile.


Vieja respuesta

Dos opciones para resolver esto.

  • Instale una versión de trabajo anterior (recomendado). Esto instalará la última versión en la rama 2.0.X:
gem 'rack', '~> 2.0.0'
  • Instale la versión fija desde el repositorio git
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

En ambos casos, debe eliminar / reemplazar esto con la versión fija adecuada una vez que esto suceda. Mantenga un registro de https://github.com/rack/rack/pull/1428

jBilbo
fuente
5

Para mí, resolví este problema agregando esta línea a Gemfile

gem 'rack', '2.0.7'

Si tiene Gemfile.locken local, puede eliminarlo y luego ejecutarlo bundle install.

Si está utilizando Capistrano, no necesita ejecutarlo bundle installmanualmente, y a Gemfile.lockmenudo no existe en su repositorio.

carril
fuente