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

rhu*_*ugo 25 ruby ruby-on-rails sidekiq

更新 gems 后,它不会加载 sidekiq 网站,并出现以下错误:

NoMethodError (undefined method `transform_keys' for <ActionDispatch::Request::Session:0x00005568df2a8710>):
Run Code Online (Sandbox Code Playgroud)

更新的宝石是:

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
Run Code Online (Sandbox Code Playgroud)

ruby 版本:ruby 2.6.0p0 (2018-12-25 修订版 66547) [x86_64-linux]

完整的错误信息

dol*_*srg 36

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

  • 它已在几个小时前刚刚发布的 Rack 2.1.2 中得到修复。 (6认同)

小智 21

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


jBi*_*lbo 9

更新:Rack 2.1.2 已经发布,它解决了这个错误

现在的解决方案是确保您使用 2.1.2 或更高版本。

bundle update rack
Run Code Online (Sandbox Code Playgroud)

可能会根据您的 Gemfile 的其余部分为您解决问题。


旧答案

为了解决这个问题,有两种选择。

  • 安装以前的工作版本(推荐)。这将在 2.0.X 分支上安装最新版本:
gem 'rack', '~> 2.0.0'
Run Code Online (Sandbox Code Playgroud)
  • 从 git 存储库本身安装固定版本
gem 'rack', github: 'rack/rack', ref: 'f690bb71425aa31d7b9b3113829af773950d8ab5'
Run Code Online (Sandbox Code Playgroud)

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


张健健*_*张健健 5

对我来说,我通过添加这一行来解决这个问题 Gemfile

gem 'rack', '2.0.7'
Run Code Online (Sandbox Code Playgroud)

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

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