前提・実現したいこと
実現したいこと
ActiveStorageでのファイルアップロード時、フォルダが作成され、
その中にアップロードファイルが格納されます。
ファイルを削除した際、今は格納フォルダが残ってしまっているため、フォルダも一緒に削除したいです。
前提
Ruby on Rails5とActiveStorageにて、ファイルアップロードの機能を実装しています。
アップロード先は、ローカルのストレージを設定しています。
ローカルストレージにアップしたファイルは、別のバッチ処理にてサーバにアップロードするため、
10分以内には削除される想定です。(一時的な格納先という位置づけ)
なお、システムの都合上、直でサーバにアップロードするのことは難しいという状況です。
発生している問題・エラーメッセージ
ファイルをアップロードすると、/opt/sample_project/web/storage 直下にアップロードファイルのキーを元に
ファイル格納用のフォルダが作成されるようなのですが、ファイル削除時にフォルダが削除されず残ってしまうため、
キーが重複した場合にフォルダの作成エラーとなり、アップロードが失敗してしまいます。
Errno::EEXIST (File exists @ dir_s_mkdir - /opt/sample_project/web/storage/7C):
該当のソースコード
ruby
1# storage.yml 2local: 3 service: Disk 4 root: <%= Rails.root.join("storage") %>
ruby
1# development.rb 2config.active_storage.service = :local
ruby
1# image.rb ※ モデル 2has_one_attached :image_file 3 4before_destroy :purge_attached_file 5 6# レコード削除時、purgeメソッドを使用して添付ファイルを削除 7def purge_attached_file 8 self.image_file.purge if self.image_file.attached? 9end
# ファイルアップロード時のローカルストレージ # ファイルを削除しても、「7C/qD」のフォルダが残ってしまう $ ls -lt /opt/sample_project/web/storage/7C/qD/ total 13740 -rwxr-xr-x 1 root root 14069478 Oct 14 13:29 7CqDb6kCKyzh8bvpcsjxgFqJ
できれば設定等で、ファイル削除時に格納ディレクトリも一緒に削除するようにしたいのですが、
情報等お持ちの方がいればご教授いただきたいです。
あなたの回答
tips
プレビュー