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
で、メンテナンスモードへ。