もた日記

くだらないことを真面目にやる

Railsメモ(33) : アプリをHerokuへデプロイする

前回Herokuへのデプロイ手順を確認したので、チュートリアルにあったサンプルアプリを参考に試作アプリをデプロイしてみる。

github.com

Rubyのバージョン


チュートリアルではRuby 2.2.3でやっていたので、バージョンを2.2.3に変更しておく。

Gemfileの編集


GemfileにはRubyのバージョンを明記して下記gemを追加する。pgPostgreSQL接続用のgem、rails_12factorはログを標準出力に変更したり、静的アセットをHeroku向けに調整するgem、pumaアプリケーションサーバのgem。
Gemfileを変更したらbundle installしておく。

ruby '2.2.3'

gem 'pg'
gem 'rails_12factor', group: :production
gem 'puma'

なお、データベースは既にSQLite3からPostgreSQLへ変更しているのでローカルでの確認も可能。
wonderwall.hatenablog.com

設定ファイルの追加


サンプルアプリからProcfileconfig/puma.rbをコピーする。それぞれの内容は以下の通り。
ちなみにPostgreSQLへの接続はHerokuが適切に処理してくれるようなのでconfig/database.ymlにProduction用の設定を追加しなくてもよい。

Procfile

web: bundle exec puma -C 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


ローカルで動作確認



一応heroku localで問題なく動作することを確認しておく。

git commit



Herokuにpushできるように、これまでの変更をgit commitしておく。

デプロイ


最初にHerokuにログインする。

$ heroku login
Enter your Heroku credentials.
Email: xxxxx@example.com
Password (typing will be hidden):
Authentication successful.

次にHerokuにアプリを作成する。引数を何も指定しないとランダムな名前になるので、使われてなさそうなアプリ名を指定する。

$ heroku create billboard-hot100
Creating billboard-hot100... done, stack is cedar-14
https://billboard-hot100.herokuapp.com/ | https://git.heroku.com/billboard-hot100.git
Git remote heroku added

Herokuにpushする。

$ git push heroku master
 …
remote:        https://billboard-hot100.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/billboard-hot100.git
 * [new branch]      master -> master

DBのマイグレーション、データ追加などを実行する。

$ heroku run rake db:migrate
$ heroku run rake db:seed_fu

これでデプロイが完了。アプリのURLにアクセスすれば動作していることが確認できる(ちなみにアプリはあくまで試作なので動作やデータが正しくない部分あり)。

このアプリのDB使用量を確認してみると、リミット10,000行のうち約7,000行を使っているので無料枠内ではデータの追加は難しそう。また、しばらくアクセスがないとHerokuがスリープ状態に移行するのでアクセスしても起動するまでに時間がかかっているのがわかる。

$ heroku pg
=== DATABASE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 3/20
PG Version:  9.4.4
Created:     2015-09-02 10:41 UTC
Data Size:   7.8 MB
Tables:      4
Rows:        6815/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      postgresql-xxxxx-xxxx

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails