ブートキャンプのアプリをDEPRECATEDなpaperclipからactive_storageに移行した。

GCSのcredential関係ってPrivate keyがそのまま入ってて改行のせいでうまく行かなかったりとかいつもハマる。エラーメッセージの内容も原因解明にあまり役に立たなくて結局ガッツリデバッグすることになって時間がかかる。

ActiveStorage + GCS + Herokuでの自分的ポイントはGCSからダウンロードできるJSONをそのまま環境変数に入れること。

storage.ymlはこんな風にするのがよい。

config/storage.yml:

google:
  service: GCS
  project: "bootcamp-224405"
  credentials: <%= ENV["GOOGLE_CREDENTIALS"] %>
  bucket: "bootcamp-fjord-jp"

こういう感じで入れておく。

$ heroku config:set GOOGLE_CREDENTIALS="$(< /path/to/bootcamp.json)"

実際にちゃんとconfigの各値が読めてるかどうかはActiveStorage::Service#configあたりをデバッグすればよい。