我目前正在开发一个使用 sidekiq-batch gem 的 Rails 应用程序。在识别出与 sidekiq 相关的 sidekiq-batch 运行时依赖项中的漏洞后,我尝试将运行时依赖项更新为推荐版本(6.4.1 到 7.1.2 之间)。
宝石文件
gem 'sidekiq-batch', '~> 0.1.6'
易受攻击的版本>=3
Gemfile.lock
sidekiq-batch (0.1.9)
sidekiq (>= 3)
为了更新运行时依赖项,我尝试更新 sidekiq-batch gem 版本以更新其运行时依赖项,但使用最新版本的 sidekiq-batch gem,我仍然获得其运行时依赖项 sidekiq 的相同版本。
更新 sidekiq-batch gem 后
宝石文件
gem 'sidekiq-batch', '~> 0.1.9'
Gemfile.lock
sidekiq-batch (0.1.9)
sidekiq (>= 3)
我尝试在 Gemfile.lock 中手动更新版本。运行捆绑更新 sidekiq-batch 后,它会从 Gemfile.lock 文件中删除手动更改。
如果您能提供有关如何解决这种情况并成功将 sidekiq-batch 的运行时依赖项更新为推荐版本,同时适应现有 sidekiq gem 版本的见解或指导,我将不胜感激。谢谢你。
这是我的 Gemfile
source 'https://rubygems.org'
git_source(:github) {|repo| "https://github.com/#{repo}.git" }
ruby '2.6.6'
gem 'rails', '~> 6.0', '>= 6.0.6.1'
gem 'puma','~> 6.0', '>= 6.0.1'
gem 'redis', '~> 4.5', '< 4.6.0'
gem 'sidekiq', '~> 5.2.8'
gem 'sidekiq-batch', '~> 0.1.6'
gem 'sidekiq-failures', '~> 1.0'
group :development, :test do
gem 'rspec-rails'
gem 'pry'
end
group :test do
gem 'fakeredis'
end
您的
Gemfile
中的这一行
gem 'sidekiq', '~> 5.2.8'
表示Bundler只允许安装大于等于
sidekiq
且小于5.2.8
的5.3
版本。
这解释了为什么 Bundler 无法将
sidekiq
更新到 6.4.1
或任何 7.x
版本。
除非您有理由不允许 Bundler 更新 gem,否则我建议删除该版本限制。例如,一个很好的理由可能是您知道新版本中的重大更改,因此无法进一步升级。
就您而言,我建议将这些行更改为:
gem 'sidekiq', '~> 6.4'
gem 'sidekiq-batch'
gem 'sidekiq-failures'
您甚至可能想尝试完全从
sidekiq
中删除版本约束,但这可能会失败,因为它的 7.0
版本引入了一些重大更改。
请参阅以下文档: