【Mac】herokuにpushしようとすると、SQlite3のエラーが出た時の話


問題

  • herokuにpushする時に SQlite3はherokuでは使えないから、本番環境ではPostgresqlを使うような設定に変更してね と言われた
  • git push heroku masterと打つと、下記のような感じのエラーが吐き出される
remote:  !     Failed to install gems via Bundler.
remote:  !     Detected sqlite3 gem which is not supported on Heroku:
remote:  !     https://devcenter.heroku.com/articles/sqlite3

対応

  • エラー文の中に下記のような、特定のディレクトリーやファイルにPermissionがないというエラーが出た時は、sudo chown -R <ディレクトリー名やファイル名>でオーナーを自分に変えたり、chown u+w <ディレクトリー名やファイル名>で書き込み権限を与えたりすると対応できる。
Permission denied @ dir_s_mkdir - /Users/{Username}/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-18/2.5.0-static/
  • 下のように、このgemをinstallしてみて!といったエラー文を確認して、gem installしようとした際にも、上記のようなパーミッションのエラーが吐き出されることがあるので、その時は上記の対応を取ると、解決に近く。
    • 自分の場合は大体がパーミッション関係の問題だった
remote:        An error occurred while installing sqlite3 (1.3.13), and Bundler cannot
remote:        continue.
remote:        Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.
  • 上記で色々試しても、まだエラーが出るようであれば、bundle installする際に --without production のコマンドをつけてみる
    • これはSQlite3を本番環境で使うから、開発環境には関係ないよ。特にローカル環境での作業には本番(prod)の話は関係しないからinstallしません!程度に勝手に解釈している(正しい理解がある人に是非突っ込んでいただきたい....!)
bundle install --without production