Ta treść została automatycznie przetłumaczona z ukraińskiego.
Ostatnio podczas wdrażania aplikacji Rails na Coolify natknąłem się na błąd, który nie był od razu oczywisty. Sidekiq uruchamia się, łączy z Redis, ale natychmiast pada z takim błędem:
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'
Przyczyna
Gem connection_pool zaktualizował się do wersji 3.0, gdzie zmieniło się API metody pop - teraz nie przyjmuje argumentów. Sidekiq 7.3.x wciąż wywołuje go po staremu, z argumentem.
Bundler automatycznie pobiera najnowszą wersję connection_pool, a scheduler Sidekiq natychmiast pada.
Fix
Dodajemy do Gemfile ograniczenie wersji:
gem 'connection_pool', '~> 2.4'
Następnie:
bundle update connection_pool
To zainstaluje ostatnią zgodną wersję (2.5.5), a Sidekiq będzie działał poprawnie.
Jeśli Twój Sidekiq uruchamia się, ale natychmiast pada z ArgumentError w connection_pool - sprawdź wersję. To klasyczny przypadek, gdy zależność pośrednia psuje wszystko bez żadnych zmian w Twoim kodzie.
Ten post nie ma jeszcze żadnych dodatków od autora.