読者です 読者をやめる 読者になる 読者になる

せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

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でもそうですが、いざ脇道(自分の担当外)に逸れるとすぐ謎の世界に突入するので、とても勉強になりました。もうやりたくない