effective_storage 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4d882d7dc41b30bee6a440cffcbcc0008dc697fc5ace3455ff2f427910325d1
4
- data.tar.gz: a6a536963a71e23feeb0106193a7d731372f3190cf48632aa5cb70388636df31
3
+ metadata.gz: 4f1b5a4ba6185fdd5c81e33afacd6dfb6ec8dc2e5c24fa07fb05be840d196740
4
+ data.tar.gz: e82b0d3bea47958aabd007a0a444088b92124421149357dd9998e1f0c30c4346
5
5
  SHA512:
6
- metadata.gz: fc59eaafef6892fb1b3826e7ad0ee0f5aacf175f553cdae2eb8bc15a2631a72ea4681f2ef6b7c594f5497007df06f7acfd91c9f76480b4d49e96811b1a637781
7
- data.tar.gz: 12d4c064a19a72670545e52f61c986c80455c90ae4852af9c3e272aea56a4331d7e7e0065e9cdfeff860f25f1e12f282b180815dd1145e1af33e66d7e2c863a4
6
+ metadata.gz: aebccce481ef3f36dac0a1f1855e957abca8f6d30465f3bb214875210a98aa24fd1ea7df14b5de80c727d503fb69ef2a226e81f23b7b7381ea88165ccdf85df3
7
+ data.tar.gz: af51fe35aeed80cd5409aa39c3048b6e4128ad80429d383e2639d8b3afa19500ba05ee2647e6ff93c46fdca6d4af3700cfcc914d81aa3f1136afcf27e873d6ad
@@ -9,6 +9,8 @@ module ActiveStorageBlobExtension
9
9
  scope :deep, -> { includes(:active_storage_extensions, attachments: [record: :record]) }
10
10
 
11
11
  scope :attached, -> { joins(:attachments) }
12
+ scope :unattached, -> { where.not(id: attached) }
13
+
12
14
  end
13
15
 
14
16
  module ClassMethods
@@ -47,8 +49,55 @@ module ActiveStorageBlobExtension
47
49
  save!
48
50
  end
49
51
 
52
+ # The purge! command is not part of the regular ActiveStorage::Blob class
53
+ # This is the command called by the admin/storage datatable
54
+ # When config.never_delete_active_storage is enabled, this is the only way to delete a Blob
55
+ # And they will not be deleted in the background.
50
56
  def purge!
51
- purge
57
+ before = EffectiveStorage.never_delete
58
+
59
+ begin
60
+ EffectiveStorage.never_delete = false
61
+ purge
62
+ ensure
63
+ EffectiveStorage.never_delete = before
64
+ end
65
+ end
66
+
67
+ def delete
68
+ if EffectiveStorage.never_delete?
69
+ Rails.logger.info "[effective_storage] Skipping ActiveStorage::Blob delete"
70
+ return
71
+ end
72
+
73
+ super
74
+ end
75
+
76
+ def destroy
77
+ if EffectiveStorage.never_delete?
78
+ Rails.logger.info "[effective_storage] Skipping ActiveStorage::Blob destroy"
79
+ return
80
+ end
81
+
82
+ super
83
+ end
84
+
85
+ def purge
86
+ if EffectiveStorage.never_delete?
87
+ Rails.logger.info "[effective_storage] Skipping ActiveStorage::Blob purge"
88
+ return
89
+ end
90
+
91
+ super
92
+ end
93
+
94
+ def purge_later
95
+ if EffectiveStorage.never_delete?
96
+ Rails.logger.info "[effective_storage] Skipping ActiveStorage::Blob purge_later"
97
+ return
98
+ end
99
+
100
+ super
52
101
  end
53
102
 
54
103
  end
@@ -6,4 +6,7 @@ EffectiveStorage.setup do |config|
6
6
  # Perform authorization on ActiveStorage downloads
7
7
  # When false any request will be permitted (the default)
8
8
  config.authorize_active_storage = true
9
+
10
+ # Do not delete ActiveStorage::Blobs
11
+ config.never_delete = true
9
12
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveStorage
2
- VERSION = '0.3.2'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
@@ -6,7 +6,7 @@ require 'effective_storage/version'
6
6
  module EffectiveStorage
7
7
 
8
8
  def self.config_keys
9
- [:layout, :authorize_active_storage]
9
+ [:layout, :authorize_active_storage, :never_delete]
10
10
  end
11
11
 
12
12
  include EffectiveGem
@@ -15,4 +15,8 @@ module EffectiveStorage
15
15
  authorize_active_storage == true
16
16
  end
17
17
 
18
+ def self.never_delete?
19
+ never_delete == true
20
+ end
21
+
18
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-21 00:00:00.000000000 Z
11
+ date: 2023-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails