爬虫類嫌いのPython日記

爬虫類が大の苦手の筆者が、Pythonに挑戦。他にも、RubyやObjective-C、Google Appengine、Herokuなど色々とチャレンジしています。

Macbook AirでRuby1.9.3-p327とRails3.2.12の環境でHerokuを使う

Railsの師匠の話では、最近のRailsでは、gem installは使用せず、bundle installで管理するらしいとの話を聞いて、Herokuでも実践してみようと、今さらながらにHerokuです。
環境は、以前に記事にしたMacbook Airにrbenvとruby-buildでRubyの開発環境を構築です。

bundlerのインストール

師匠の話では、gemにはbundlerだけを入れて、他はrailsも含めてローカル環境に入れるとの事なので、まずはbundlerをインストールします。

rbenv exec gem install bundler
rbenv rehash

Railsをローカルにインストール

Railsプロジェクトを作成するディレクトリの1つ上のディレクトリにRailsプロジェクト作成のためのRailsをローカルにインストールします。
まずは、ディレクトリを移動します。
そして、RailsインストールのためだけのGemfileを作成します。

bundle init

Gemfileを編集します。

gem "rails", "3.2.12" #バージョンを指定しないと最新版が入ります

railsをvendor/bundleディレクトリ以下にインストールします。
(bundleでは、vendor/bundleディレクトリ以下にインストールする事を推奨しています)

bundle install --path vendor/bundle
bundle list #インストールされたgemを確認します

Railsプロジェクトの作成

いよいよRaileプロジェクトを作成します。
今回のプロジェクト名は、myappにします。

bundle exec rails new myapp --skip-bundle
    • skip-bundleオプションは、忘れないように要注意です。

忘れると、Ruby環境にgemがインストールされてしまいます。


Railsをローカルにインストールする際に使用したファイルを削除します。

rm -f Gemfile
rm -f Gemfile.Lock
rm -rf .bundle
rm -rm vendor

Railsプロジェクトのセッティング

cd myapp

gitの管理対象からvendor/bundleディレクトリを外す

echo 'vendor/bundle' >> .gitignore

Herokuでは、ローカル環境ではDBはsqliteを使用しますが、Heroku上ではPostgreSQLを使用するので、Gemfileを編集します。

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

このpgをインストールする際にエラーになっていると言う記事をよく見かけます。
解決方法は、以下のようにします。

bundle install --path vendor/bundle --without production

pgはHerokuの本番環境でしか使用しないので、--without productionオプションでインストール対象から除外してやります。


config/environments以下のpuroduction.rbを編集します。

config.assets.compile = false #この部分を変更します
↓
config.assets.compile = true

Railsサーバーで実行

bundle exec rails server

Herokuへデプロイする

まず公開キーを作成し、Herokuに登録します。

ssh-keygen
heroku keys:add

Herokuにアプリケーションを作成し、デプロイします。

heroku create アプリケーション名
git init
git add .
git commit -m "init"
git push heroku master

これで、Herokuへのデプロイは完了です。
先ほど、除外したpgもちゃんとインストールされているはずです。


ローカル環境へのRailsインストールとHerokuで、アプリケーションをドンドン開発していきましょう!!