ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

RailsプロジェクトをHerokuにデプロイする方法

いまRailsの勉強をしているのですが、試しにHerokuにデプロイしてみました。 その方法を簡単にまとめてみます。

Railsの準備

プロジェクトを作成する

rails newするだけです。

$ rails new hoge

Gitにコミットする

HerokuはGitを使うみたいなので、その準備をします。 Herokuを使うだけなら、特にリモートリポジトリを準備する必要はありません。

$ git init
$ git add .
$ git commit -m 'first commit'

Gemfileを編集する

ここで結構はまりました。

RailsはデフォルトでSQLiteを使うようになっているのですが、HerokuはPostgreSQLを使います。 それだけならまだしも、Gemfilegem 'sqlite3'が残っていると、以下のエラーが表示されます。

Installing sqlite3 (1.3.8)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/tmp/build_fe2767bf-8ae8-4b42-86f1-6f1536d20723/vendor/ruby-2.0.0/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).

そうならないために、:development:production(Heroku)で分けます。

$ vi Gemfile

group :development do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

gemをインストールする

あとはgemをインストールします。 このとき、--withoutオプションで、本番環境用のgemをインストールしないようにします。

$ bundle install --without production

コミットする

以上の変更をコミットします。 bundle installしたときにGemfile.lockが追加されているので、それをよしなに反映させましょう。

$ git add .
$ git commit -m 'add Gemfile.lock'

Herokuにデプロイする

ユーザ登録する

なによりまずはユーザ登録をします。

コマンドをインストールする

つぎに、Heroku Toolbeltというものをインストールします。 これがないといろんなコマンドがつかえないのです。

ログインする

次のコマンドで、ログインします。

$ heroku login

Heroku上にリポジトリを作成する

Railsのルートディレクトリ上で、createコマンドを実行します。 すると、Heroku上にリポジトリが作成されます。

$ heroku create

createすると、Herokuのサブドメインが与えられます。 あとはPushするだけでデプロイ完了、ということです。

Pushする

それではさっそくPushしましょう。 リモートリポジトリにはherokuを指定します。

$ git push heroku master

ちなみにどんなリモートリポジトリがあるかはgit remote -vで確認できます。

表示を確認する

ブラウザでURLを指定してもよいのですが、以下のコマンドを打てば自動でブラウザを開いてくれます。 親切すなぁ。

$ heroku open

以上でした。 ちなみにSQLiteのくだりで数時間はまってました。。。Orz