herokuにRailsアプリをデプロイして遊んだ

herokuで遊んでみたメモ。一通り引っかかった気がする。

sshでpermission deniedとなって git push heroku master 出来ない

heroku keys:add

で public key を登録して解決。本当はherokuコマンドを使った作業の前にあらかじめ、

heroku login

しておくことで、public keyの登録が出来るみたい。
(参考)Getting Started with Ruby on Heroku/Cedar | Heroku Dev Center

heroku keys:clear

でpublic keyの削除。

Gemfile

herokuのDBはPostgreSQL。database.ymlはsqlite3のままでもいけるが、Gemfileは書き換えなければいけない。ローカルではsqlite3だったので、Gemfilesを書き換えて対処。

group :development do
    gem 'sqlite3'
end

group :production do
    gem "pg"
end

ローカルの開発環境ではpgを使用しないので、

bundle install --without production

とすれば、group :production do下のブロックに記述されたgemはインストールされない。herokuにpushした際は、--without development:test で実行されるみたい。

db:migrateを実行し忘れる

heroku run db:migrate

heroku db:push に失敗する

heroku db:push でローカルのDBの内容をアップロード出来る。
(参考)
HerokuでDBのデータをダウンロードしたりアップロードしたり - アインシュタインの電話番号
Importing and Exporting Your Data Using Taps | Heroku Dev Center

が、これが上手くいかない。途中までは進むが、

Taps Server Error: PGError: ERROR:  time zone displacement out of range: "2011-09-25 12:00:00.000000+5893992000"

となってコケる。ぐぐるrubyの1.9.3から発生するようになったらしく、1.9.2なら平気らしい。rvm環境下だったので、1.9.2をインストールしてgemはherokuとtapsだけ入れて再度実行で通った。

アプリの停止

heroku maintenance:on

で、メンテナンスモードへ。