5
5

More than 5 years have passed since last update.

ActiveStorageでアップロードした画像が本番環境で表示されなくなる問題について

Last updated at Posted at 2019-09-03

表題の件を対応しました。
問題がありましたらコメントいただきたいです。

環境

Rails 5.2.3
Ruby 2.6.3
Capistrano 3.11.0
AWS

問題

本番環境ActiveStrorageを使って画像アップロードをした。

アップロードしたその時は画像は問題なく表示されるが、
次のデプロイ作業をした時に404エラーが起こった。

原因

画像のアップロード先が [appname]/storage にデフォルトで設定されていた。
そのためcapistranoでデプロイすることで、以前アップロードされた画像ファイルがあるディレクトリは参照されず、[appname]/storage内の空のディレクトリを参照していた。
これが404のエラーの原因である。

そこで、アップロード先をshared/内にするよう設定変更をすることにした。

対策

  1. storageディレクトリをpublic内に移動
  2. public/storage にアップロード先するようにstorage.ymlで設定変更
storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("public/storage") %>  ## 元は "storage"

3. 本番環境のpublic/storageに、sharedディレクトリからリンクを貼る設定。

deproy.rb
append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system", "public/storage"
5
5
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
5
5