未定义的方法 `transform_keys' 加载 Sidekiq web

undefined method `transform_keys' loading Sidekiq web

更新 gems 后,它不会加载 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(2018-12-25 修订版 66547)[x86_64-linux]

Full error message

这似乎是 Rack 2.1.1 的问题。它适用于 2.0.8.

这是一个机架问题,已通过此 PR 修复:https://github.com/rack/rack/pull/1428

对我来说,我通过将这一行添加到 Gemfile

来解决这个问题
gem 'rack', '2.0.7'

如果你本地有Gemfile.lock,你可以删除它然后运行 bundle install

如果您使用的是 Capistrano,则不需要 运行 bundle install 手动,并且 Gemfile.lock 通常不存在于您的存储库中。

更新: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'

在这两种情况下,一旦发生这种情况,您应该 remove/replace 使用适当的固定版本。跟踪 https://github.com/rack/rack/pull/1428