«

Cloud9で開発したRailsアプリをHerokuへデプロイ

先日公開した、はじめてRubyで作ったアプリ

Poo It! - Twitter連動うんち分析アプリ

https://poo-it.herokuapp.com

これをHerokuに公開する時に死ぬほど詰まったので
その時に設定した事をメモとして残しておく


まずはGithubへのpushがあったら、Herokuに自動デプロイされるようにした

[Heroku]githubから自動でherokuにデプロイ
http://kayakuguri.github.io/blog/2015/02/10/heroku-github-sync/

いざデプロイしてみると、さっそくエラー吐いた

 !     Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
            Detected buildpacks: Ruby,Node.js
            See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order

ビルドパックを自分で追加した

また、とりあえずHerokuはPostgreSQLを使わないといけないらしい
Gemfileに PostgreSQL(gem pg) を使うよう設定した
Heroku環境下では group :production を参照するらしいので、そのように

# For Heroku
group :production do
  gem 'pg', '~> 0.18'
  gem 'rails_12factor'
end

HerokuにPostgreSQLの最新版を入れてしまうと動きません
※ 開発時に gem ‘pg’ とだけすると 1.0.0 が入った
調べてもバージョン出てこなかったりエラー分でわかりにくいので気をつける

次いで、
Railsのasset precomplieが出来ないとかのエラーを解決

Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

config/environments/production.rbconfig.assets.compile = false の項目を true に変更

ついでにベタ打ちだったHTMLタグをRailsのテンプレートタグに修正した

image_tag - リファレンス - - Railsドキュメント http://railsdoc.com/references/image_tag


ついでにHerokuでdb:migrateしてなかったので Cloud9 上でコマンド実行

$ heroku run --app APP_NAME db:migrate

これでHeroku環境下で動作しましたが、プログラム自体のエラーが 取り切れてなかったので、一時的に開発環境同様にエラーを表示させて

# config/environments/production.rb
config.consider_all_requests_local = true

エラーを取りきって、ファイルを修正して
無事にHeroku環境下での動作に成功させた