ActiveStorageでCloudinaryを使うときに本当に必要なこと

はてなブログからHeroku上に構築したRailsアプリケーションに移行する際に当然ブログなら画像アップロード機能が不可欠なわけですが、S3においておくのも面倒なので、ひとまずCloudinaryに画像入れることにしました。

Pricingにもあるように、しばらくは無料で戦えるようにはなっているのでありがたくこちらを利用させていただきます。
elements.heroku.com/…/cloudinary

ちょっと日本語の記事とか読んでたんですがうまくできないし、必要もないライブラリをインストールしていたりであまり参考にならなかったので書き残しておきます。

1. HerokuでCloudinaryのアドオンを追加

これはHerokuの場合に行います。すでにアドオンをインストールしている人はSkip。

2. CloudinaryのGemをRailsアプリケーションにインストールする

必ずインストールしましょう。
github.com/…/cloudinary_gem

3. config/cloudinary.ymlファイルを作成する

具体的には下記のようにして、環境変数を参照するようにしたが、

production:
  cloud_name: <%= ENV['CLOUDINARY_CLOUD_NAME'] %>
  api_key:    <%= ENV['CLOUDINARY_API_KEY'] %>
  api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %>
  secure: true
  cdn_domain: true

下記の公式URLを参考にして進めるのがいいと思う。
cloudinary.com/…/rails_integration

4. ActiveStorageの設定を行う

次はActiveStorageの設定を進める。といっても簡単で、config/storage.yml を作成して下記コードを追加。

cloudinary:
  service: Cloudinary

僕はHerokuの本番環境でのみ利用したかったので、config/enviroments/production.rb に下記コードに変更した。

config.active_storage.service = :cloudinary

これについても下記公式URLを参考にして進めた。

cloudinary.com/…/rails_activestorage

Finished.

これでActiveStorageを利用する際にCloudinaryが利用されるようになった。
試しに画像をActiveStorageでアップロードしてみてアップロードできるかテストしてみよう。

ちなみに、いくつかの記事で言及されている、activestorage-cloudinary-serviceについては公式SDKがActiveStorageをサポートしているし、更新も2年以上止まっているみたいなので、インストールする必要は全くない。ちゃんと何をするライブラリなのか?本当に必要か?というのを調べてからインストールするようにしましょう。コピペは禁物。
github.com/…/activestorage-cloudinary-service