Rails 重新部署後 Active Storage 的圖片 404 Not Found
情況:
把 rails 專案部署到 production 後,原有在 production 的圖片會消失。Rails 專案本身有使用 Active Storage,但沒有儲存第三方,所以 develop 跟 production 都使用 :local。
storage.yml
local:
service: Disk
root: <%= Rails.root.join("storage") %>
production.rb
# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :local
原因:
只有 storage 目錄下的東西被加進 gitignore, storage 本身並沒有被 ignore,所以每次 push 上去會推一個空的 storage 資料夾,而 production 的資料夾就會被蓋掉。
.gitignore
# Ignore uploaded files in development.
/storage/*
解法:
在 deploy.rb 下加入 “storage” 至 append :linked_dirs
。只要把 storage 指定為共享目錄,這樣子就不會被覆蓋了。
append :linked_dirs, "log", "sorage", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system"
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。