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を使います。
それだけならまだしも、Gemfile
にgem '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