Herokuにデプロイしました
ローカルにRailsを入れて色々試してみて、さあいよいよHerokuにデプロイしてみよう!という方の参考になれば (*´∀`*)
目次
環境
- OS: Xubuntu 13.04
- IDE: なし (テキストエディタを使用)
- Ruby: 1.9.3p448
- Rails: 3.2.14
- DB (開発・テスト環境): SQLite3
- DB (Heroku): PostgreSQL
公式サイトでは開発用のDBもPostgreSQLを使うことを推奨していますが、面倒くさいので"HerokuではじめるRailsプログラミング入門"に従ってDBを使い分けることにしました。
Herokuに登録する
Herokuに登録後、Toolbeltをインストールします。 私の場合はUbuntuなので下記のコマンドを実行。
$ sudo wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
Herokuにログインします。
私の場合はすでにGitHubでSSH公開鍵を作っているので下記のような結果になりました。
$ 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
- 公式: Getting Started with Rails 3.x on Heroku | Heroku Dev Center
- 参照: Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました - Rails 雑感 - Ruby on Rails with OIAX
- 参照: rails new コマンドの際versionを指定する方法 - Qiita [キータ]
- 参照: Heroku導入メモ
- 書籍: HerokuではじめるRailsプログラミング入門
余談: 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は使わないことにしました (;・_・)/~~~