からくりがてんこ

IT関連情報、プログラミングに関する作業ログや備忘録を記載していきます。

HerokuにRailsアプリをデプロイしてみる

今回はHerokuにデプロイする方法を調べてみました。
最近、ちょっとしたサンプルWebアプリとかをお客さんに見せる機会があるので、ローカルじゃなく外から見える環境に簡単にあげたいな〜ってことが多いので。

Herokuってな〜に?
読み方は、「ヘロク」(ハーオークという説もある)
Herokuは「IaaS」「PaaS」「SaaS」でいうところの、「PaaS」のサービスに該当します。
(違いはここが分かりやすいかと:http://www.cloud-ace.jp/report/detail01/)

インスタンス(RailsではDyno:ダイノといいます)1つなら無料枠で利用できる範囲なので、
ちょっと確認したいって時にぴったりですね。
いろんな言語がすでにインストールされているので、アプリだけ作ってデプロイという流れになります。

HerokuにはRailsをデプロイするためのCLIツール(Heroku Toolbelt)とかも用意してあるので、
コマンド一発で簡単にできちゃうようですよ。

デプロイまでの流れ

  • Herokuにユーザー登録
  • HerokuToolbeltインストール
  • アプリの作成
  • コマンドを使ってデプロイ

Herokuにユーザー登録

公式サイトから Sign Up して、アカウントを作成しましょう。
必要なのはメールアドレスだけで、無料で作れます。
詳細は割愛…

HerokuToolbeltインストール

デプロイするためのCLI(CommandLineInterface)ツール、HerokuToolbeltのインストールを行います。
詳細は割愛…割愛しすぎ?!

ツールをインストールした後、herokuにログインします。
登録時のメールアドレスとパスワードが必要になります。
また、鍵が必要になるのですが、インストール時になければ作られるので問題ないでしょう。

では、ログイン。

$ heroku login

これで、heroku上のアカウント領域での操作が可能となります。

アプリの作成

ちなみにHerokuにデプロイするために必要なのは3点

  1. 依存関係ファイル(railsだったらGemfile)
  2. Procfile(heroku上で実行するコマンド群)
  3. ソースファイル

herokuはpostgresqlが無料で利用できます。
なのでpostgresqlを使ったアプリを作成します。

$ rails new sample -d postgresql

依存関係ファイル

Gemfileを編集します。

  • therubyracer有効化

(RubyからJavascriptのv8エンジンまたはlibv8エンジンを使うためのGem)

(Heroku上で動かすためのGem。ログファイルやアセットなどのHeroku用微調整を行ってくれる)

$ cd sample
$ vi Gemfile
ーーーー
gem 'therubyracer'
gem 'rails_12factor', group: :production
ーーーー

これでデプロイに必要な1つができました。

Procfile

これはherokuにデプロイしたときに実行されるファイルです。
今回はwebアプリになるのでrailsの開始コマンドを記述したファイルを作ります。

$ vi Procfile
ーーーー
web: bundle exec rails server -p $PORT
ーーーー
$PORTはherokuが勝手に設定してくれます

これでデプロイに必要な2つができました。

ソースファイル

railsのscaffold機能を使って簡単に作ってしまいましょう。

$ rails g scaffold Profile name:string age:integer

これでデプロイに必要な3つ全てができました。

コマンドを使ってデプロイ

herokuへのデプロイはgitを使って行います。
まず、gitのローカルリポジトリを作成し、コミットしましょう

$ git init
$ git add .
$ git commit -m "initial commit."

次に、heroku側にアプリ領域を作ります

$ heroku create
$ git push heroku master

これによって、heroku上にアプリ領域が作成され、gitよりデプロイされます。ちょっと時間かかります。。。
それと同時に、heroku上にリモートリポジトリが作成され、ローカルリポジトリの.gitに
herokuへの情報が追加されます。(なのでgit init後にやってください)

今回はpostgresqlを使っているので、heroku上にpostgresqlの領域も作ります。
アドオンコマンドを使って作成可能です。

$ heroku addons:add heroku-postgresql
$ heroku run rake db:migrate

どこに繋げば確認できるか忘れちゃったって方に

$ heroku apps:info

接続情報等が見れますので、内容を確認してブラウザで開いてみてください。

https://*****.herokuapp.com/profiles

はい、OK。

ちなみに修正して再度デプロイするときは、こんな感じ

$ git add .
$ git commit -m "commit comment"
$ git push heroku master

こんなことが無料でできる時代ってスゴイ。

感謝サイト:
http://www.workabroad.jp/posts/1164