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で、アプリケーションをドンドン開発していきましょう!!