Skip to content

Instantly share code, notes, and snippets.

@subelsky
Created October 31, 2012 13:51
Show Gist options
  • Star 30 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save subelsky/3987140 to your computer and use it in GitHub Desktop.
Save subelsky/3987140 to your computer and use it in GitHub Desktop.
Setting up Puma and Rails on Heroku
# Gemfile
gem "puma"
# Procfile
web: bundle exec puma -p $PORT -e $RACK_ENV -C config/puma.rb
# add to config block config/environments/production.rb
config.threadsafe!
# get rid of NewRelic after_fork code, if you were doing this:
# http://support.newrelic.com/kb/troubleshooting/unicorn-no-data
# and get rid of config/unicorn.rb if you were using that
# config/puma.rb
require "active_record"
cwd = File.dirname(__FILE__)+"/.."
ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
ActiveRecord::Base.establish_connection(ENV["DATABASE_URL"] || YAML.load_file("#{cwd}/config/database.yml")[ENV["RACK_ENV"]])
ActiveRecord::Base.verify_active_connections!
# if you use NewRelic, set your NEWRELIC_DISPATCHER environment variable on heroku, per
# https://github.com/puma/puma/issues/128 - may not be needed for future releases of Puma
heroku config:add NEWRELIC_DISPATCHER=Puma
@thomasklemm
Copy link

An alternative approach that helps increase AR's connection pool size on Heroku has been published in the Heroku dev center.

@calasyr
Copy link

calasyr commented May 11, 2013

config.threadsafe! is deprecated for rails 4:

"Rails applications behave by default as thread safe in production as long as config.cache_classes and config.eager_load are set to true."

@GantMan
Copy link

GantMan commented Jul 8, 2013

ActiveRecord::Base.verify_active_connections! is also deprecated, and should be removed.

@subelsky
Copy link
Author

yeah you don't need a puma.rb file. That was vestigial from when I was on unicorn, and I thought had read somewhere that puma needed it to be able to restart cleanly

@subelsky
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment