app_dir = File.expand_path('..', __dir__)
directory app_dir

# load puma config from environment variables
environment ENV.fetch('RACK_ENV', 'development')

# listening address
host = ENV.fetch('BIND_HOST', '0.0.0.0')
port = ENV.fetch('PORT', 9292)
bind "tcp://#{host}:#{port}"

# Concurrency tuning
workers_count = ENV.fetch('WEB_CONCURRENCY', 2).to_i
workers workers_count

max_threads_count = ENV.fetch('PUMA_MAX_THREADS', ENV.fetch('RAILS_MAX_THREADS', 5)).to_i
min_threads_count = ENV.fetch('PUMA_MIN_THREADS', ENV.fetch('RAILS_MIN_THREADS', 1)).to_i
threads min_threads_count, max_threads_count

# Preload app code before forking worker processes for better memory usage (Copy-on-Write)
if workers_count > 0
	preload_app!

	before_fork do
    # Disconnect Sequel connection pool in the master process before forking
    DB.disconnect if defined?(DB)
  end
end
