diff --git a/Gemfile b/Gemfile index 753ca7f6f..2f5ac5f9f 100644 --- a/Gemfile +++ b/Gemfile @@ -15,6 +15,7 @@ gem "ffi", ">= 1.9.24" gem "fog-aws" gem "friendly_id" gem "govspeak" +gem "govuk_app_config" gem "govuk_elements_form_builder", "0.1.1" gem "govuk_elements_rails", "2.2.1" gem "govuk_frontend_toolkit", "9.0.1" diff --git a/Gemfile.lock b/Gemfile.lock index 5fbd6c6d4..b5acc06b8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -825,6 +825,7 @@ DEPENDENCIES fog-aws friendly_id govspeak + govuk_app_config govuk_elements_form_builder (= 0.1.1) govuk_elements_rails (= 2.2.1) govuk_frontend_toolkit (= 9.0.1) diff --git a/config/initializers/prometheus_exporter.rb b/config/initializers/prometheus_exporter.rb deleted file mode 100644 index cc7ecb9c7..000000000 --- a/config/initializers/prometheus_exporter.rb +++ /dev/null @@ -1,9 +0,0 @@ -unless Rails.env.test? || Rails.env.development? - require "prometheus_exporter/middleware" - require "prometheus_exporter/instrumentation" - - # This reports stats per request like HTTP status and timings - Rails.application.middleware.unshift PrometheusExporter::Middleware - # Delayed job metrics - PrometheusExporter::Instrumentation::DelayedJob.register_plugin -end diff --git a/config/puma.rb b/config/puma.rb index e3462a3f6..d08b16a62 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,63 +1,2 @@ -# Puma can serve each request in a thread from an internal thread pool. -# The `threads` method setting takes two numbers a minimum and maximum. -# Any libraries that use thread pools should be configured to match -# the maximum value specified for Puma. Default is set to 5 threads for minimum -# and maximum, this matches the default thread size of Active Record. -# -max_threads_count = ENV.fetch("RAILS_MAX_THREADS", 5) -min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } -threads min_threads_count, max_threads_count - -# Specifies the `port` that Puma will listen on to receive requests, default is 3000. -# -port ENV.fetch("PORT", 3000) - -# Specifies the `environment` that Puma will run in. -# -environment ENV.fetch("RAILS_ENV") { "development" } - -# Specifies the number of `workers` to boot in clustered mode. -# Workers are forked webserver processes. If using threads and workers together -# the concurrency of the application would be max `threads` * `workers`. -# Workers do not work on JRuby or Windows (both of which do not support -# processes). -# -workers ENV.fetch("WEB_CONCURRENCY", 2) - -# Use the `preload_app!` method when specifying a `workers` number. -# This directive tells Puma to first boot the application and load code -# before forking the application. This takes advantage of Copy On Write -# process behavior so workers use less memory. If you use this option -# you need to make sure to reconnect any threads in the `on_worker_boot` -# block. -# -preload_app! - -# The code in the `on_worker_boot` will be called if you are using -# clustered mode by specifying a number of `workers`. After each worker -# process is booted this block will be run, if you are using `preload_app!` -# option you will want to use this block to reconnect to any threads -# or connections that may have been created at application boot, Ruby -# cannot share connections between processes. -# -on_worker_boot do - ActiveRecord::Base.establish_connection if defined?(ActiveRecord) -end - -# Allow puma to be restarted by `rails restart` command. -plugin :tmp_restart - -# Activerecord Connection Pool Metrics -after_worker_boot do - if Rails.env.production? - require "prometheus_exporter/instrumentation" - require "prometheus_exporter/client" - PrometheusExporter::Instrumentation::Puma.start - PrometheusExporter::Instrumentation::Process.start(type: "web") - - PrometheusExporter::Instrumentation::ActiveRecord.start( - custom_labels: { type: "puma_worker" }, - config_labels: %i[database host], - ) - end -end +require "govuk_app_config/govuk_puma" +GovukPuma.configure_rails(self)