[Heroku] WebServer を WEBrick から thin に変更する方法 - [Rails 3.x on Heroku/Cedar]
単に Heroku に Rails アプリをデプロイしただけの最初の状態では、Webサーバーは WEBrick で動いています。
$ heroku ps
Process State Command
------- ------------ ---------------------------------
web.1 idle for 94h bundle exec rails server -p $PORT
WebserverBy default, your app’s web process runs rails server, which uses Webrick. This is fine for testing, but for production apps you’ll want to switch to a more robust webserver. We recommend Thin.
To use Thin with Rails 3, add it to your Gemfile:
gem 'thin'Run bundle install to set up your bundle locally.
■ Procfile の作成・追記
web: bundle exec rails server thin -p $PORT -e $RACK_ENV
echo "RACK_ENV=development" >>.env
.gitignore に .env を無視するように追記します。
# Ignore Heroku for local config
/.env
■ Foreman のインストール
$ gem install foreman
■ Foreman の起動
Foreman を起動して、ブラウザから http://localhost:5000/ にアクセスして、確認します。
$ foreman start
■ Heroku へデプロイ
$ git add -A
$ git commit -m "use thin via procfile"
$ git push heroku
■ thin で起動しているか確認する
$ heroku ps
Process State Command
------- ----------- ------------------------------------
web.1 idle for 4m bundle exec rails server thin -p $..
以上です。
【参考】
・Getting Started with Rails 3.x on Heroku/Cedar | Heroku Dev Center
・The Process Model | Heroku Dev Center
・Fiberを使ってem-http-requestとかを同期的に呼び出す - daily gimite
・Issue #13: FiberError with Rails 3.1 on Heroku · mperham/rack-fiber_pool · GitHub