sinatraPJをherokuにデプロイする
自作のWebアプリケーションをherokuにデプロイするのに非常に苦労したので備忘録。
1.TOP画面が表示されない!
⇒サブブランチをpushしていたためと思われる。
解決策:masterブランチをpushする
2.git push heroku masterに失敗する!
⇒production環境でpostgresを利用させるようにするのを忘れていた
解決策:Gemfileを修正
Sinatraでlocalはsqlite3、herokuはpostgreSQLでデプロイしてみる - Morizotter Blog
⇒pgをInstallするようになったが、インストールに失敗する
解決策:ローカルでbundle installしなおして、Gemfile.lockを再生成する
※herokuデプロイ時はGemfile.lockを見るので、Gemfile.lockをリポジトリから消去してはいけない
3.TOP画面が表示されるようになったが、データ登録ボタンを押下するとエラー発生
⇒postgresの接続情報が設定されていない
解決策:database.ymlに情報を追加(追加する情報は、https://dashboard.heroku.com/apps/のResourcesのHeroku Postgresを参考に)
⇒あわせて、rbファイルのActiveRecord::Base.establish_connectionの引数がdevelopment固定になっていたので修正。
解決策:ENV["RACK_ENV"]を読ませる(ローカルは$ echo "RACK_ENV=development" >> .envを設定する)
⇒そもそもpostgresにローカルで使っていたテーブル構造がなかった(まっさら状態)!
解決策:マイグレーションファイル作ってから、$ heroku run rake db:migrate
SinatraからActiveRecord 3を使う(1) マイグレーション - アインシュタインの電話番号
4.データ登録に成功するようになったが、データ検索ボタンを押下するとエラー発生
⇒ActiveRecordのfindメソッドの書き方に互換性がなかった(逆になんでこんな変な書き方したんだ……)
解決策:whereメソッドを使う
修正前
data.find(:first, conditions: {date: day})
修正後
data.where(date: day).first
感想
railsでもそうですが、いざ脇道(自分の担当外)に逸れるとすぐ謎の世界に突入するので、とても勉強になりました。もうやりたくない