Нещодавно під час деплою Rails-додатку на Coolify зіткнувся з помилкою, яка не одразу очевидна. Sidekiq стартує, підключається до Redis, але одразу падає з такою помилкою:
ArgumentError: wrong number of arguments (given 1, expected 0) /gems/connection_pool-3.0.2/lib/connection_pool/timed_stack.rb:62:in `pop' /gems/sidekiq-7.3.9/lib/sidekiq/scheduled.rb:226:in `initial_wait'
Причина
Gem connection_pool оновився до версії 3.0, де змінився API методу pop - тепер він не приймає аргументів. Sidekiq 7.3.x все ще викликає його по-старому, з аргументом.
Bundler автоматично підтягує найновішу версію connection_pool, і scheduler Sidekiq одразу падає.
Фікс
Додаємо в Gemfile обмеження версії:
gem 'connection_pool', '~> 2.4'
Потім:
bundle update connection_pool
Це встановить останню сумісну версію (2.5.5), і Sidekiq працюватиме коректно.
Якщо ваш Sidekiq стартує, але одразу падає з ArgumentError у connection_pool - перевірте версію. Це класичний випадок, коли транзитивна залежність ламає все без жодних змін у вашому коді.
Цей допис поки що не має жодних доповнень від автора/ки.