metode yang tidak terdefinisi `transform_keys 'memuat web Sidekiq

24

Setelah memperbarui permata, itu tidak memuat situs web sidekiq memberikan kesalahan berikut:

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

Permata yang diperbarui adalah:

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 ruby: ruby ​​2.6.0p0 (2018-12-25 revisi 66547) [x86_64-linux]

Pesan kesalahan penuh

rhugo
sumber
1
Versi Ruby dan Ruby on Rails apa yang Anda gunakan?
spickermann
@spickermann bertanya karena Hash # transform_keys baru-baru ini ditambahkan ke inti Ruby, di v2.5.
Cary Swoveland
@spickermann ruby ​​2.6.0p0 (2018-12-25 revisi 66547) [x86_64-linux]
rhugo
@rhugo Bisakah Anda memposting pesan kesalahan lengkap termasuk jejak tumpukan dan kode yang memicu pengecualian (lihat tumpukan jejak untuk mengidentifikasi di mana kesalahan terjadi dalam aplikasi Anda).
spickermann
@spickermann Saya menambahkan gambar dengan log, itu tidak membiarkan saya memasukkan begitu banyak kode dalam pesan
rhugo

Jawaban:

36

Tampaknya menjadi masalah dengan Rack 2.1.1. Ini berfungsi ok dengan 2.0.8.

dolarsrg
sumber
6
Ini telah diperbaiki di Rack 2.1.2, yang baru saja dirilis beberapa jam yang lalu.
Mike A.
1
Saya telah memperbarui ke Rack 2.1.2 tetapi Sidekiq merender halaman kosong. Menurunkan versi ke 2.0.8 menjadikannya berfungsi lagi. Lebih banyak masalah di sini: github.com/rack/rack/issues/1531
dolarsrg
8

Pembaruan: Rack 2.1.2 telah dirilis dan ini memecahkan kesalahan ini

Sekarang solusinya adalah memastikan Anda menggunakan 2.1.2 atau lebih tinggi.

bundle update rack

mungkin melakukan trik untuk Anda tergantung pada sisa Gemfile Anda.


Jawaban lama

Dua opsi untuk mengatasi ini.

  • Instal rilis yang berfungsi sebelumnya (disarankan). Ini akan menginstal rilis terbaru pada cabang 2.0.X:
gem 'rack', '~> 2.0.0'
  • Instal versi tetap dari repositori git itu sendiri
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'

Dalam kedua kasus, Anda harus menghapus / mengganti ini dengan rilis tetap yang tepat setelah ini terjadi. Melacak https://github.com/rack/rack/pull/1428

jBilbo
sumber
5

Bagi saya, saya memecahkan masalah ini dengan menambahkan baris ini ke Gemfile

gem 'rack', '2.0.7'

Jika ada Gemfile.lockdi lokal, Anda dapat menghapusnya dan kemudian jalankan bundle install.

Jika Anda menggunakan Capistrano, Anda tidak perlu menjalankannya bundle installsecara manual, dan Gemfile.lockseringkali tidak ada di repositori Anda.

Jalur
sumber