HerokuにデプロイしたRailsアプリでPumaを使う

Herokuに初めてRailsアプリをデプロイしてみたけど異常に重い...。
調べてみると どうやらデフォルトのサーバーは推奨されていないらしい。
そこで今回はHerokuで推奨されているPumaを導入してみる。

GenfileにPumaを追加

gem 'puma'

続いてconfig直下にpuma.rbを作成
config/puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

続いてProcfileをプロジェクト直下に作成
Procfile

web: bundle exec puma -C config/puma.rb

以下のコマンドで正常に動作していれば成功

$ env RACK_ENV=production bundle exec puma -C config/puma.rb

後はherokuにデプロイすればOK