未定义的方法“transform_keys”加载Sidekiq web

25

更新了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]

完整错误消息


1
你使用的是哪个版本的 Ruby 和 Ruby on Rails? - spickermann
@spickermann 之所以问这个问题,是因为在 Ruby 核心中最近才添加了 Hash#transform_keys 方法,该方法是在 v2.5 版本中添加的。 - Cary Swoveland
@spickermann ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] - rhugo
@rhugo,请您提供完整的错误信息,包括堆栈跟踪和触发异常的代码(请查看堆栈跟踪以确定应用程序中出现错误的位置)。 - spickermann
@spickermann 我添加了一张带有日志的图片,因为消息中不能包含太多代码。 - rhugo
@GuillermoSiliceoTrueba 使用 rack 2.0.8 解决了这个问题。 - rhugo
4个回答

36

看起来这是Rack 2.1.1的问题。在2.0.8版本中正常工作。


6
这个问题已经在刚刚发布的Rack 2.1.2版本中得到修复。 - Mike A.
1
我已经更新到Rack 2.1.2,但是Sidekiq渲染空白页面。将其降级为2.0.8可以使其再次工作。更多问题请参考这里:https://github.com/rack/rack/issues/1531 - dolarsrg

21

9

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

5

对于我来说,我通过在Gemfile中添加这行代码来解决这个问题。

gem 'rack', '2.0.7'

如果你在本地有 Gemfile.lock 文件,可以删除它然后执行 bundle install
如果你正在使用 Capistrano,则无需手动运行 bundle install,且 Gemfile.lock 文件通常不存在于你的代码库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接