Sha256: 2a22ed99dd578dfd0eb240e699964c7394d4fe70878691e5206d0cd7cef01e62

Contents?: true

Size: 1.52 KB

Versions: 45

Compression:

Stored size: 1.52 KB

Contents

module GovukPuma
  def self.configure_rails(config)
    config.port ENV.fetch("PORT", 3000)

    config.environment ENV.fetch("RAILS_ENV", "development")

    if ENV["GOVUK_APP_LOGROOT"]
      config.stdout_redirect "#{ENV['GOVUK_APP_LOGROOT']}/app.out.log" "#{ENV['GOVUK_APP_LOGROOT']}/app.err.log"
    end

    # `worker_timeout` specifies how many seconds Puma will wait before terminating a worker.
    timeout = if ENV.fetch("RAILS_ENV", "development") == "development"
                3600
              else
                Integer(ENV.fetch("PUMA_TIMEOUT", 15))
              end
    config.worker_timeout timeout

    # When changing the min/max threads for Puma, also consider changing ActiveRecord to match.
    max_threads_count = ENV.fetch("RAILS_MAX_THREADS", 5)
    min_threads_count = ENV.fetch("RAILS_MIN_THREADS", max_threads_count)
    config.threads min_threads_count, max_threads_count

    # `workers` specifies the number of worker processes that Puma will fork.
    # The overall concurrency limit is worker count * max threads per worker.
    config.workers ENV.fetch("WEB_CONCURRENCY", 2)

    # `preload_app!` tells Puma to load application code before forking worker processes.
    # This reduces RAM wastage by making better use of copy-on-write.
    config.preload_app!

    config.before_fork do |_server|
      next unless ENV["GOVUK_APP_ROOT"]

      ENV["BUNDLE_GEMFILE"] = "#{ENV['GOVUK_APP_ROOT']}/Gemfile"
    end

    # Allow puma to be restarted by `rails restart` command.
    config.plugin :tmp_restart
  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
govuk_app_config-9.15.2 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.15.1 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.15.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.6 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.5 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.4 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.3 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.2 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.1 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.14.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.13.1 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.13.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.12.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.11.2 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.11.1 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.11.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.10.0 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.9.2 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.9.1 lib/govuk_app_config/govuk_puma.rb
govuk_app_config-9.9.0 lib/govuk_app_config/govuk_puma.rb