From 54afed9fb46fcc5b7de47dc107280359a672da77 Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Mon, 18 Nov 2024 12:36:27 +0530 Subject: [PATCH] feat: add judoscaler gem for heroku autoscaling (#10419) - add judoscaler gem to allow judoscale use in heroku environments - This will allow auto scaling for both web and worker dynos across both standard-1x/2x and performance dynos - This will scaling in response to queue time rather than response time(heroku default) - This also allows you to scale multiple dynos in and out at once, rather than scaling them one at a time, as is the default. Ref ---- 1. https://judoscale.com/ 2. https://devcenter.heroku.com/articles/judoscale --- Gemfile | 3 +++ Gemfile.lock | 9 +++++++++ config/application.rb | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/Gemfile b/Gemfile index 2e1e3ec14..f18305970 100644 --- a/Gemfile +++ b/Gemfile @@ -181,6 +181,9 @@ gem 'reverse_markdown' group :production do # we dont want request timing out in development while using byebug gem 'rack-timeout' + # for heroku autoscaling + gem 'judoscale-rails', require: false + gem 'judoscale-sidekiq', require: false end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 41140bdda..e2f5c91be 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -397,6 +397,13 @@ GEM hana (~> 1.3) regexp_parser (~> 2.0) uri_template (~> 0.7) + judoscale-rails (1.8.2) + judoscale-ruby (= 1.8.2) + railties + judoscale-ruby (1.8.2) + judoscale-sidekiq (1.8.2) + judoscale-ruby (= 1.8.2) + sidekiq (>= 5.0) jwt (2.8.1) base64 kaminari (1.2.2) @@ -891,6 +898,8 @@ DEPENDENCIES jbuilder json_refs json_schemer + judoscale-rails + judoscale-sidekiq jwt kaminari koala diff --git a/config/application.rb b/config/application.rb index 1aedfc860..f3443ddb3 100644 --- a/config/application.rb +++ b/config/application.rb @@ -27,6 +27,12 @@ if ENV.fetch('SENTRY_DSN', false).present? require 'sentry-sidekiq' end +# heroku autoscaling +if ENV.fetch('JUDOSCALE_URL', false).present? + require 'judoscale-rails' + require 'judoscale-sidekiq' +end + module Chatwoot class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version.