método indefinido `transform_keys 'carregando a web do Sidekiq

24

Após atualizar as gemas, ele não carrega o site sidekiq, fornecendo o seguinte erro:

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

As gemas que foram atualizadas foram:

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

versão do ruby: ruby ​​2.6.0p0 (revisão de 25/12/2018 66547) [x86_64-linux]

Mensagem de erro completa

rhugo
fonte
11
Qual versão do Ruby e Ruby on Rails você usa?
spickermann 13/01
O @spickermann está perguntando porque o Hash # transform_keys foi adicionado ao núcleo do Ruby recentemente, na v2.5.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (revisão 2018-12-25 66547) [x86_64-linux]
rhugo 14/01
@rhugo Você pode postar a mensagem de erro completa, incluindo o rastreamento de pilha e o código que aciona a exceção (consulte o rastreamento de pilha para identificar onde o erro ocorre no seu aplicativo).
spickermann 14/01
@spickermann Adicionei uma imagem com o log, ela não me permite incluir tanto código na mensagem
rhugo 14/01

Respostas:

36

Parece ser um problema com o Rack 2.1.1. Funciona bem com o 2.0.8.

dolarsrg
fonte
6
Foi corrigido no Rack 2.1.2, que foi lançado há algumas horas atrás.
Mike A.
11
Atualizei para o Rack 2.1.2, mas o Sidekiq renderiza páginas em branco. O downgrade para a 2.0.8 faz com que ela funcione novamente. Mais questões aqui: github.com/rack/rack/issues/1531
dolarsrg
8

Atualização: O rack 2.1.2 foi lançado e resolve este erro

Agora a solução está certificando-se de que você usa 2.1.2 ou superior.

bundle update rack

pode fazer o truque para você, dependendo do restante do seu Gemfile.


Resposta antiga

Duas opções para resolver isso.

  • Instale uma versão de trabalho anterior (recomendado). Isso instalará a versão mais recente no ramo 2.0.X:
gem 'rack', '~> 2.0.0'
  • Instale a versão fixa do próprio repositório git
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

Nos dois casos, você deve remover / substituir isso pela liberação fixa adequada assim que isso acontecer. Acompanhe https://github.com/rack/rack/pull/1428

jBilbo
fonte
5

Para mim, resolvi esse problema adicionando esta linha ao Gemfile

gem 'rack', '2.0.7'

Se você possui Gemfile.locklocal, você pode excluí-lo e depois executar bundle install.

Se você estiver usando o Capistrano, não precisará executar bundle installmanualmente e Gemfile.lockgeralmente não existe no seu repositório.

faixa
fonte