effective_storage 0.3.2 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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