require "dotenv"
Dotenv.load()

tag 'ENSL'

preload_app!
daemonize false

rackup DefaultRackup

rails_env = ENV['RAILS_ENV'] || 'development'
app_dir = ENV['DEPLOY_PATH'] || '/var/www'

environment rails_env
bind "unix://#{app_dir}/tmp/sockets/puma.sock"
port Integer(ENV['PUMA_PORT'] || 4000)

stdout_redirect "#{app_dir}/log/puma.stdout.log", \
                "#{app_dir}/log/puma.stderr.log", true

#pidfile "#{base_path}/tmp/pids/puma.pid"
#state_path "#{base_path}/tmp/pids/puma.state"
#stdout_redirect stdout_path, stderr_path

# FIXME: sometimes the app becomes super slow if workers are used, investigate
workers Integer(ENV['PUMA_WORKERS']) if (ENV.has_key?("PUMA_WORKERS") && ENV['PUMA_WORKERS'].to_i > 0)
worker_timeout Integer(ENV['PUMA_TIMEOUT'] || 30)
threads Integer(ENV['PUMA_MIN_THREADS']  || 1), Integer(ENV['PUMA_MAX_THREADS'] || 16)

plugin :tmp_restart

on_worker_boot do
  require "active_record"
  ActiveSupport.on_load(:active_record) do
    ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
    ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env])
  end
end

# EXPLAIN This has been added here but why?
on_restart do
  ENV["BUNDLE_GEMFILE"] = "#{app_dir}/Gemfile"
  Dotenv.overload
  ActiveRecord::Base.connection.disconnect!
end