diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml index 8a995cdc4..1ffc72e3a 100644 --- a/.github/workflows/publish-image.yml +++ b/.github/workflows/publish-image.yml @@ -34,7 +34,9 @@ jobs: if [ "$GITHUB_REF_NAME" = 'master' ]; then echo 'tag=latest' >> "$GITHUB_OUTPUT" else - echo 'tag='"$GITHUB_REF_NAME" >> "$GITHUB_OUTPUT" + # Sanitize branch name for Docker tag (replace / with -) + SANITIZED_TAG=$(echo "$GITHUB_REF_NAME" | sed 's/\//-/g') + echo 'tag='"$SANITIZED_TAG" >> "$GITHUB_OUTPUT" fi if [ "$GITHUB_REF_NAME" = 'staging' ] || [ "$GITHUB_REF_NAME" = 'master' ]; then diff --git a/Dockerfile b/Dockerfile index c24012d84..37ab601d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,7 +44,7 @@ COPY . /app/ # Precompile assets after copying app because whole Rails pipeline is needed. RUN if [ "$RAILS_ENV" = 'production' ] || [ "$RAILS_ENV" = 'staging' ] || [ "$RAILS_ENV" = 'luxproduction' ] || [ "$RAILS_ENV" = 'euros' ]; then \ - SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile; \ + SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile --trace; \ else \ echo "Skipping assets:precompile"; \ fi diff --git a/Gemfile b/Gemfile index bd050109c..246105ee2 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' gem 'active_model_otp', '~> 2.3', '>= 2.3.4' gem 'bcrypt', '~> 3.1.20' -gem 'bootsnap', '~> 1.19.0' +gem 'bootsnap', '~> 1.20.0' gem 'browser', '~> 6.2.0' gem 'cssbundling-rails', '~> 1.4', '>= 1.4.3' gem 'dartsass-rails', '~> 0.5.1' @@ -16,7 +16,7 @@ gem 'jquery-rails', '~> 4.6.1' gem 'jsbundling-rails', '~> 1.3', '>= 1.3.1' gem 'kaminari', '~> 1.2.2' gem 'mollie-api-ruby', '~> 4.18.0' -gem 'net-imap', '~> 0.5.12' +gem 'net-imap', '~> 0.6.2' gem 'net-pop', '~> 0.1.2' gem 'net-smtp', '~> 0.5.1' gem 'omniauth', '~> 2.1.4' @@ -36,7 +36,7 @@ gem 'rqrcode', '~> 3.1', '>= 3.1.1' gem 'sentry-rails', '~> 6.2' gem 'sentry-ruby', '~> 6.2' gem 'sentry-sidekiq', '~> 6.2' -gem 'sidekiq', '~> 8.0.10' +gem 'sidekiq', '~> 8.1.0' gem 'sidekiq-scheduler', '~> 6.0.1' gem 'simple_form', '~> 5.4.0' gem 'sprockets-rails', '~> 3.5', '>= 3.5.2' @@ -52,7 +52,7 @@ group :development, :test do gem 'brakeman', '~> 7.1.1', require: false gem 'bullet', '~> 8.1' gem 'colorize', '~> 1.1.0' - gem 'database_consistency', '~> 2.1.0' + gem 'database_consistency', '~> 2.1.1' gem 'dotenv-rails', '~> 3.2.0' gem 'guard-livereload', '~> 2.5.2' gem 'guard-rspec', '~> 4.7.3', require: false @@ -75,7 +75,7 @@ end group :test do gem 'rails-controller-testing', '~> 1.0.5' - gem 'rubocop', '~> 1.81.7', require: false + gem 'rubocop', '~> 1.82.1', require: false gem 'rubocop-factory_bot', '~> 2.28.0', require: false gem 'rubocop-performance', '~> 1.26', '>= 1.26.1', require: false gem 'rubocop-rails', '~> 2.34', '>= 2.34.2', require: false diff --git a/Gemfile.lock b/Gemfile.lock index d5c5c452e..c1c848339 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,7 +92,7 @@ GEM rouge (>= 1.0.0) bigdecimal (3.3.1) bindex (0.8.1) - bootsnap (1.19.0) + bootsnap (1.20.0) msgpack (~> 1.2) brakeman (7.1.1) racc @@ -118,16 +118,16 @@ GEM coderay (1.1.3) colorize (1.1.0) concurrent-ruby (1.3.6) - connection_pool (3.0.2) + connection_pool (2.5.5) crass (1.0.6) cssbundling-rails (1.4.3) railties (>= 6.0.0) dartsass-rails (0.5.1) railties (>= 6.0.0) sass-embedded (~> 1.63) - database_consistency (2.1.0) + database_consistency (2.1.1) activerecord (>= 3.2) - date (3.5.0) + date (3.5.1) devise (4.9.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -231,7 +231,7 @@ GEM thor (>= 0.14, < 2.0) jsbundling-rails (1.3.1) railties (>= 6.0.0) - json (2.17.0) + json (2.18.0) jwt (3.1.2) base64 kaminari (1.2.2) @@ -287,7 +287,7 @@ GEM nenv (0.3.0) net-http (0.6.0) uri - net-imap (0.5.12) + net-imap (0.6.2) date net-protocol net-pop (0.1.2) @@ -347,7 +347,7 @@ GEM pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.6.0) + prism (1.7.0) pry (0.15.2) coderay (~> 1.1) method_source (~> 1.0) @@ -430,7 +430,7 @@ GEM tsort redis (5.4.1) redis-client (>= 0.22.0) - redis-client (0.26.1) + redis-client (0.26.2) connection_pool regexp_parser (2.11.3) reline (0.6.3) @@ -472,7 +472,7 @@ GEM rspec-mocks (~> 3.13) rspec-support (~> 3.13) rspec-support (3.13.6) - rubocop (1.81.7) + rubocop (1.82.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -480,7 +480,7 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.47.1, < 2.0) + rubocop-ast (>= 1.48.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) rubocop-ast (1.48.0) @@ -522,12 +522,12 @@ GEM sentry-ruby (~> 6.2.0) sidekiq (>= 5.0) shellany (0.0.1) - sidekiq (8.0.10) - connection_pool (>= 2.5.0) - json (>= 2.9.0) - logger (>= 1.6.2) - rack (>= 3.1.0) - redis-client (>= 0.23.2) + sidekiq (8.1.0) + connection_pool (>= 3.0.0) + json (>= 2.16.0) + logger (>= 1.7.0) + rack (>= 3.2.0) + redis-client (>= 0.26.0) sidekiq-scheduler (6.0.1) rufus-scheduler (~> 3.2) sidekiq (>= 7.3, < 9) @@ -570,7 +570,7 @@ GEM thor (1.4.0) timecop (0.9.10) timeliness (0.5.3) - timeout (0.4.4) + timeout (0.6.0) tsort (0.2.0) turbo-rails (2.0.20) actionpack (>= 7.1.0) @@ -581,7 +581,7 @@ GEM execjs (>= 0.3.0, < 3) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uniform_notifier (1.18.0) uri (1.0.4) useragent (0.16.11) @@ -614,7 +614,7 @@ DEPENDENCIES awesome_print (~> 1.9.2) bcrypt (~> 3.1.20) better_errors (~> 2.10.1) - bootsnap (~> 1.19.0) + bootsnap (~> 1.20.0) brakeman (~> 7.1.1) browser (~> 6.2.0) bullet (~> 8.1) @@ -622,7 +622,7 @@ DEPENDENCIES colorize (~> 1.1.0) cssbundling-rails (~> 1.4, >= 1.4.3) dartsass-rails (~> 0.5.1) - database_consistency (~> 2.1.0) + database_consistency (~> 2.1.1) devise (~> 4.9.4) devise-i18n (~> 1.15.0) dotenv-rails (~> 3.2.0) @@ -639,7 +639,7 @@ DEPENDENCIES listen (~> 3.9.0) mina (~> 1.2.5) mollie-api-ruby (~> 4.18.0) - net-imap (~> 0.5.12) + net-imap (~> 0.6.2) net-pop (~> 0.1.2) net-smtp (~> 0.5.1) omniauth (~> 2.1.4) @@ -662,7 +662,7 @@ DEPENDENCIES rest-client (~> 2.1.0) rqrcode (~> 3.1, >= 3.1.1) rspec-rails (~> 8.0.2) - rubocop (~> 1.81.7) + rubocop (~> 1.82.1) rubocop-factory_bot (~> 2.28.0) rubocop-performance (~> 1.26, >= 1.26.1) rubocop-rails (~> 2.34, >= 2.34.2) @@ -671,7 +671,7 @@ DEPENDENCIES sentry-rails (~> 6.2) sentry-ruby (~> 6.2) sentry-sidekiq (~> 6.2) - sidekiq (~> 8.0.10) + sidekiq (~> 8.1.0) sidekiq-scheduler (~> 6.0.1) simple_form (~> 5.4.0) simplecov (~> 0.22.0) diff --git a/config/application.rb b/config/application.rb index 9883b0502..72a68fbdc 100644 --- a/config/application.rb +++ b/config/application.rb @@ -28,6 +28,9 @@ class Application < Rails::Application config.i18n.default_locale = :nl config.i18n.fallbacks = [:nl] + # Redis cache store with connection_pool 3.x compatibility + # Use nested pool configuration for proper initialization + redis_cache_url = Rails.application.config_for(:cable)['url'] config.cache_store = :redis_cache_store, { url: Rails.application.config_for(:cable)['url'], pool: { size: ENV.fetch('RAILS_MAX_THREADS', 5).to_i, timeout: 5 }