Techioz Blog

Sidekiq-batch ランタイムの依存関係を推奨バージョンに更新できません

概要

私は現在、sidekiq-batch gem を使用する Rails アプリケーションに取り組んでいます。 Sidekiq に関連する Sidekiq-batch のランタイム依存関係の脆弱性を特定した後、ランタイム依存関係を推奨バージョン (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 で手動でバージョンを更新しようとしました。バンドル更新sidekiq-batchを実行すると、Gemfile.lockファイルから手動による変更が削除されます。

この状況に対処し、既存のsidekiq gemバージョンに対応しながらsidekiq-batchのランタイム依存関係を推奨バージョンに正常に更新する方法についての洞察やガイダンスをいただければ幸いです。ありがとう。

これが私の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 が 5.2.8 以上 5.3 未満の Sidekiq バージョンのみをインストールできることを意味します。

これが、Bundler が Sidekiq を 6.4.1 または 7.x バージョンに更新できない理由を説明しています。

Bundler による gem の更新を許可しない理由がない限り、そのバージョン制約を削除することをお勧めします。正当な理由としては、たとえば、新しいバージョンの重大な変更について知っているため、それ以上アップグレードできないことが考えられます。

あなたの場合、これらの行を次のように変更することをお勧めします。

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

Sidekiq からバージョン制約を完全に削除してみることもできますが、7.0 バージョンには重大な変更が導入されているため、失敗する可能性があります。

次のドキュメントを参照してください。