undefined метод `transform_keys 'загрузка веб-сайта Sidekiq

24

После обновления гемов он не загружает сайт sidekiq, выдавая следующую ошибку:

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

Были обновлены драгоценные камни:

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: ruby ​​2.6.0p0 (версия 20165-12-25 66547) [x86_64-linux]

Полное сообщение об ошибке

rhugo
источник
1
Какую версию Ruby и Ruby on Rails вы используете?
Спикерманн
@spickermann спрашивает, потому что Hash # transform_keys был добавлен в ядро ​​Ruby совсем недавно, в v2.5.
Кэри Свовеланд
@spickermann ruby ​​2.6.0p0 (2018-12-25 редакция 66547) [x86_64-linux]
rhugo
@rhugo Не могли бы вы опубликовать полное сообщение об ошибке, включая трассировку стека и код, который вызывает исключение (см. трассировку стека, чтобы определить, где ошибка возникает в вашем приложении).
Спикерманн
@spickermann Я добавил изображение с журналом, оно не позволяет мне включать в сообщение так много кода
rhugo

Ответы:

36

Кажется, проблема с Rack 2.1.1. Работает нормально с 2.0.8.

dolarsrg
источник
6
Это было исправлено в Rack 2.1.2, который был выпущен пару часов назад.
Майк А.
1
Я обновил до Rack 2.1.2, но Sidekiq отображает пустые страницы. Понижение до 2.0.8 заставляет его работать снова. Больше вопросов здесь: github.com/rack/rack/issues/1531
dolarsrg
8

Обновление: Rack 2.1.2 был выпущен, и это решает эту ошибку

Теперь решение гарантирует, что вы используете 2.1.2 или выше.

bundle update rack

может сделать трюк для вас в зависимости от остальной части вашего Gemfile.


Старый ответ

Два варианта, чтобы решить эту проблему.

  • Установите предыдущий рабочий выпуск (рекомендуется). Это установит последнюю версию в ветке 2.0.X:
gem 'rack', '~> 2.0.0'
  • Установите исправленную версию из самого репозитория git
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

В обоих случаях вы должны удалить / заменить это исправленным выпуском, как только это произойдет. Следите за https://github.com/rack/rack/pull/1428

jBilbo
источник
5

Для меня я решил эту проблему, добавив эту строку в Gemfile

gem 'rack', '2.0.7'

Если у вас есть Gemfile.lockлокальный, вы можете удалить его, а затем запустить bundle install.

Если вы используете Capistrano, вам не нужно запускать bundle installвручную, и Gemfile.lockчасто его нет в вашем хранилище.

полоса дороги
источник