すたらブログ

文系Webプログラマの備忘録

Herokuにデプロイしました

ローカルにRailsを入れて色々試してみて、さあいよいよHerokuにデプロイしてみよう!という方の参考になれば (*´∀`*)

目次

  1. 環境
  2. Herokuに登録する
  3. Railsアプリを新規作成する
  4. Gemfileを編集する
  5. Railsアプリの初期設定をする
  6. Herokuにデプロイする
  7. まとめ

環境

公式サイトでは開発用のDBもPostgreSQLを使うことを推奨していますが、面倒くさいので"HerokuではじめるRailsプログラミング入門"に従ってDBを使い分けることにしました。

Herokuに登録する

Herokuに登録後、Toolbeltをインストールします。 私の場合はUbuntuなので下記のコマンドを実行。

$ sudo wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

Herokuにログインします。
私の場合はすでにGitHubSSH公開鍵を作っているので下記のような結果になりました。

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

Railsアプリを新規作成する

私のPCにはRails4と3が入っています。
今回は3で作成します。

$ gem list rails

*** LOCAL GEMS ***

rails (4.0.0, 3.2.14)

Railsのバージョンを指定し、なおかつbundle install実行させずに新規アプリを作成します。
カレントディレクトリの直下にアプリ名のディレクトリが作成されます。

$ rails _3.2.14_ new test_heroku --skip-bundle

Gemfileを編集する

bundle installの前にGemfileを編集します。

まず、Herokuで使用するRubyのバージョンを明示します。
source 'https://rubygems.org'の行の下に追記します。

# (追記)
ruby '1.9.3'

次に、開発・テストと本番とで使用するDBを分けます。 gem 'sqlite3'の行を書き換えます。

# (書き換え)
group :development, :test do
    gem 'sqlite3'
end

group :production do
    gem 'pg'
end

最後に、下記はUbuntuだけの設定です。
これをしないと『JavaScriptのruntimeがない!』とエラーが出ます。

# (行頭のコメントを除去)
gem 'therubyracer', platforms: :ruby

スキップしていたbundle installを実行します。

$ cd /path/to/your/app
$ bundle install

Railsアプリの初期設定をする

scaffoldを実行します。

$ cd /path/to/your/app
$ rails g scaffold user name:string email:string
$ rake db:migrate

テスト用サーバを起動して、http://localhost:3000/users を開いて確認します。

$ rails s

Herokuにデプロイする

まずはRailsアプリのディレクトリに移動し、Gitを設定します。

$ cd /path/to/your/app
$ git init
$ git add .
$ git commit -m 'init'

名前を指定したアプリをHerokuに作成します。

$ heroku create sutara-sample
Creating sutara-sample... done, stack is cedar
http://sutara-sample.herokuapp.com/ | git@heroku.com:sutara-sample.git
Git remote heroku added

ファイルを送ります。
いろいろメッセージが出ますが、とりあえずslug sizeくらいしか理解できません (^ ^;)

$ git push heroku master

-----> Compiled slug size: 25.4MB

HerokuのDBの初期設定を行います。

$ heroku run rake db:migrate

ブラウザで実際に確認します。

$ heroku open
# http://sutara-sample.herokuapp.com/users

まとめ

前夜のうちに参考ページをブクマしてから本日の作業に臨みましたが、意外に時間がかかりました。
4時間くらいでしょうか…。
最初はローカルでもPostgreSQLを使おうとしてたので、それに時間を取られてしまいました。

仕組みが分かると、FTPでの更新と比べて簡潔だなぁと感心しました。
課金が怖いのでconsole関係はなるべく使わないようにしてますが…(^ ^;)

参照資料

とても助けられました m(_ _)m

余談: PostgreSQLのインストール

ローカルでもRailsのDBにPostgreSQLを使う場合は、当然それをインストールしていなくてはいけません。 私はいきなりbundle installを実行したので、いろいろエラーが出て焦りました (^ ^;)
結局、下記のページで自分のPCにPostgreSQLが入ってないことが原因だと分かってホッとしました。

というわけで、Ubuntu機にPostgreSQLをインストールします。
まず、"postgresql-server-dev"の最新バージョンを確認します。

$ apt-cache search postgresql-server-dev
postgresql-server-dev-9.1 - development files for PostgreSQL 9.1 server-side programming
postgresql-server-dev-all - extension build tool for multiple PostgreSQL versions

最新バージョンは"9.1"だとわかったので、下記のようにPostgreSQLをインストールします。

$ sudo apt-get install postgresql postgresql-server-dev-9.1

…が、結局ローカルではPostgreSQLは使わないことにしました (;・_・)/~~~