表題の件を対応しました。
問題がありましたらコメントいただきたいです。
環境
Rails 5.2.3
Ruby 2.6.3
Capistrano 3.11.0
AWS
問題
本番環境ActiveStrorageを使って画像アップロードをした。
アップロードしたその時は画像は問題なく表示されるが、
次のデプロイ作業をした時に404エラーが起こった。
原因
画像のアップロード先が [appname]/storage にデフォルトで設定されていた。
そのためcapistranoでデプロイすることで、以前アップロードされた画像ファイルがあるディレクトリは参照されず、[appname]/storage内の空のディレクトリを参照していた。
これが404のエラーの原因である。
そこで、アップロード先をshared/内にするよう設定変更をすることにした。
対策
- storageディレクトリをpublic内に移動
- 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"