ruby 无法将sidekiq-batch运行时依赖项更新为推荐的版本

k4emjkb1  于 11个月前  发布在  Ruby
关注(0)|答案(1)|浏览(126)

我目前正在开发一个使用sidekiq-batch gem的Rails应用程序。在发现sidekiq-batch的运行时依赖项中存在与sidekiq相关的漏洞后,我试图将运行时依赖项更新到推荐的版本(6.4.1到7.1.2之间)。
Gemfile

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之后
Gemfile

gem 'sidekiq-batch', '~> 0.1.9'


Gemfile.lock

sidekiq-batch (0.1.9)
  sidekiq (>= 3)


我尝试在Gemfile.lock中手动更新版本。运行bundle update 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

jckbn6z7

jckbn6z71#

您的Gemfile中的这行

gem 'sidekiq', '~> 5.2.8'

字符串
意味着Bundler仅允许安装大于或等于5.2.8且小于5.3sidekiq版本。
这解释了为什么Bundler无法将sidekiq更新到6.4.1或任何7.x版本。
除非您有理由不允许Bundler更新gem,否则我建议您取消版本限制。一个很好的理由可能是,例如,您知道新版本中的一个重大更改,因此无法进一步升级。
在您的情况下,我建议将这些行更改为:

gem 'sidekiq', '~> 6.4'
gem 'sidekiq-batch'
gem 'sidekiq-failures'


您甚至可能想尝试从sidekiq中完全删除版本约束,但这可能会失败,因为它的7.0版本引入了一些破坏性的更改。
请参阅以下文档:

相关问题