Хорошо, покопавшись в некоторых исследованиях, я выяснил, почему это произошло - я попытаюсь объяснить это на случай, если у кого-то могут возникнуть аналогичные проблемы при развертывании с помощью Capistrano.
Итак, это не напрямую Rails или проблема, связанная с Active Storage. Я использую локальное хранилище для своих вложений, поэтому я не храню их на Amazon или Google или Azure - местом хранения этих вложений по умолчанию является папка storage в root приложения - поэтому я проверил 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
Моя проблема заключалась в следующем: Сама эта папка не добавлена к .gitignore
по умолчанию только содержимое внутри папки игнорируется GIT. Так получилось, что я вставлял пустую папку для хранения в свое репо каждый раз, когда делаю git push
. Это, конечно, переопределит папку хранилища, которая использовалась ранее в производстве при каждом развертывании с Capistrano.
В моем случае проблема была решена путем добавления папки хранилища в linked_dirs
массив, который вы можете указать внутри deploy.rb
:
append :linked_dirs, 'log', 'storage', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', '.bundle', 'public/system', 'public/uploads', 'node_modules'
Если этот параметр установлен, папка не будет перезаписываться при каждом развертывании, вместо этого она будет совместно использоваться между выпусками, и ранее загруженные файлы будут оставайтесь доступными.
Надеюсь, это поможет кому-нибудь в будущем, если вы спросите себя, почему ваши файлы исчезают: ').