puma snippets

Puma, Sinatra, ActiveRecord and "could not obtain a database connection"

Tagged activerecord, sinatra, puma  Languages ruby

Getting connection errors with Puma, Sinatra and ActiveRecord?

ActiveRecord::ConnectionTimeoutError at /
could not obtain a database connection within 5.000 seconds (waited 5.002 seconds)

Add this to your Sinatra application:

use ActiveRecord::ConnectionAdapters::ConnectionManagement

Deployment Tasks for Puma and Mina (Start, Restart, Stop, Phased Restart)

Tagged puma, mina  Languages ruby
def puma_conf
  @puma_conf ||= begin
    require 'puma/configuration'
    config = Puma::Configuration.new(config_file: "config/puma.rb.#{rails_env}")
    config.load
    OpenStruct.new(config.options)
  end
end

set :puma_cmd, 'bundle exec puma'
set :pumactl_cmd, 'bundle exec pumactl'
set :puma_state_path, puma_conf.state
set :puma_start_options, "-q -d -e #{rails_env}  -C config/puma.rb.#{rails_env}"

namespace :puma do
  desc 'Start puma'
  task :start => :environment do
    queue "cd #{full_current_path} && #{puma_cmd} #{puma_start_options}"
  end

  desc 'Stop puma'
  task :stop => :environment do
    queue "cd #{full_current_path} && #{pumactl_cmd} -S #{puma_state_path} stop"
  end

  desc 'Restart puma'
  task :restart => :environment do
    begin
      queue "cd #{full_current_path} && #{pumactl_cmd} -S #{puma_state_path} restart"
    rescue => ex
      puts "Failed to restart puma: #{ex}\nAssuming not started."
    end
  end

  desc 'Restart puma (phased restart)'
  task :phased_restart => :environment do
    run "cd #{full_current_path} && #{pumactl_cmd} -S #{puma_state_path} phased-restart"
  end
end