0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【完全無料】Render×CloudinaryでRails画像アップロードを永続化する方法

Posted at

はじめに

こんにちは。
現在、Ruby on Rails で Web アプリケーションを開発しています。

今回は、無料ホスティングサービス「Render」でデプロイした際に発生する
「アップロード画像が時間とともに消えてしまう問題」を解決する方法を紹介します!

対象読者:

  • Renderの無料プランを使いたい人
  • Active Storageを使って画像アップロードしたい人
  • とにかくコストをかけずにRailsアプリを公開したい人

問題

Renderでアプリをデプロイ後、アップロードした画像が時間経過で消える。
image.png

原因

Render(Freeプラン)のファイルシステムは一時的です。
つまり、publicstorage フォルダに保存したファイルは、以下のタイミングで削除されます。

  • サーバーの再起動
  • デプロイ時
  • 自動スリープ後の再起動

つまり、画像をローカルディスクに保存するだけではダメなんです。

解決方法

RenderのFreeプランを継続しながら解決するには、外部ストレージに保存する必要があります。
今回は初心者におすすめなCloudinaryを使う方法を紹介します。

Cloudinaryとは

画像や動画のアップロード・CDN配信ができるクラウドサービス。

導入手順:

  1. Cloudinaryで無料登録
  2. gem 'cloudinary' を追加し、bundle install
  3. Active StorageとCloudinaryを連携
    bin/rails active_storage:install
    
  4. config/storage.yml に以下を追記
    cloudinary:
    service: Cloudinary
    
  5. .env or credentials.yml.enc にAPIキー等を記載
    CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
    
  6. config/environments/production.rb に設定
    config.active_storage.service = :cloudinary
    

.envdotenv-rails を使っている場合に利用できます。
Renderでデプロイするなら credentials.yml.enc に書く方が安心です。

おわりに

Renderの無料プランとCloudinaryの無料枠を使えば、完全に無料でRailsアプリに画像アップロード機能を追加できます!

この記事が「お金をかけずにアプリ制作」したい方の助けになれば嬉しいです!

今後も、費用を抑えたアプリ開発や、初学者でも取り組みやすい技術記事を投稿予定です。
よければフォロー・いいねお願いします🙌

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?