active_storage_base64 1.2.0 → 3.0.0
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 +5 -5
- data/README.md +11 -2
- data/lib/active_storage_support/base64_attach.rb +2 -0
- data/lib/active_storage_support/support_for_base64.rb +15 -20
- metadata +64 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2a0d75307a7c96973646ed02733a40ec52456aa67b81d75c24c5be6a1abda375
|
4
|
+
data.tar.gz: 64d5fcea8ef73cf23d7182f9ccefea8c70f2629a26b43f0b3eebb35c507cfd14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7545063aa84f96ab54044370f0119b698c2c5b54a3951436d81b89352fc1e07fc242288151d2bc05187b7c6bffec287d40bee209f112686e78d9a97004b91aa8
|
7
|
+
data.tar.gz: 8b285b0c6d6d5c321b3afd6393f6f67b12167481e565d399a6f610878c8d87ae755284140b2f6119498178754916992069a02222ce2d83c4ff40fcb348b40132
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[](https://github.com/rootstrap/active-storage-base64/actions/workflows/ci.yml)
|
2
2
|
[](https://codeclimate.com/github/rootstrap/active-storage-base64/maintainability)
|
3
3
|
[](https://codeclimate.com/github/rootstrap/active-storage-base64/test_coverage)
|
4
4
|
|
@@ -13,9 +13,18 @@ In order to get the gem working on your project you just need to add the gem to
|
|
13
13
|
gem 'active_storage_base64'
|
14
14
|
```
|
15
15
|
|
16
|
+
## Compatibility
|
17
|
+
Rails Version | ActiveStorageBase64 Version
|
18
|
+
--------------|-----------------------------
|
19
|
+
7.1.x | 3.0.x
|
20
|
+
7.0.x | 2.0.x
|
21
|
+
6.1.x | 1.2.x
|
22
|
+
6.0.x | 1.1.x
|
23
|
+
5.2.x | 0.1.x
|
24
|
+
|
16
25
|
## Prerequisites
|
17
26
|
|
18
|
-
The only
|
27
|
+
The only prerequisite for using this gem is having ActiveStorage properly set up in your project. For more information on how to do this, check [Active Storage Overview](https://edgeguides.rubyonrails.org/active_storage_overview.html).
|
19
28
|
|
20
29
|
## Usage
|
21
30
|
|
@@ -14,6 +14,7 @@ module ActiveStorageSupport
|
|
14
14
|
attachment
|
15
15
|
end
|
16
16
|
|
17
|
+
# rubocop:disable Metrics/AbcSize
|
17
18
|
def fill_attachment_data(attachment, base64_data)
|
18
19
|
return unless base64_data.try(:is_a?, String) && base64_data.strip.start_with?('data')
|
19
20
|
|
@@ -24,6 +25,7 @@ module ActiveStorageSupport
|
|
24
25
|
attachment[:content_type] ||= content_type(headers)
|
25
26
|
attachment[:filename] ||= Time.current.to_i.to_s
|
26
27
|
end
|
28
|
+
# rubocop:enable Metrics/AbcSize
|
27
29
|
|
28
30
|
def content_type(headers)
|
29
31
|
headers =~ /^data:(.*?)$/
|
@@ -5,8 +5,8 @@ module ActiveStorageSupport
|
|
5
5
|
module SupportForBase64
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
class_methods do
|
8
|
-
def has_one_base64_attached(name, dependent: :purge_later, service: nil, strict_loading: false)
|
9
|
-
has_one_attached name, dependent: dependent, service: service, strict_loading: strict_loading
|
8
|
+
def has_one_base64_attached(name, dependent: :purge_later, service: nil, strict_loading: false, &block)
|
9
|
+
has_one_attached name, dependent: dependent, service: service, strict_loading: strict_loading, &block
|
10
10
|
|
11
11
|
generated_association_methods.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
12
12
|
# frozen_string_literal: true
|
@@ -14,9 +14,10 @@ module ActiveStorageSupport
|
|
14
14
|
@active_storage_attached ||= {}
|
15
15
|
@active_storage_attached[:#{name}] ||= ActiveStorageSupport::Base64One.new("#{name}", self)
|
16
16
|
end
|
17
|
+
|
17
18
|
def #{name}=(attachable)
|
18
19
|
attachment_changes["#{name}"] =
|
19
|
-
if attachable.nil?
|
20
|
+
if attachable.nil? || attachable == ""
|
20
21
|
ActiveStorage::Attached::Changes::DeleteOne.new("#{name}", self)
|
21
22
|
else
|
22
23
|
ActiveStorage::Attached::Changes::CreateOne.new(
|
@@ -27,8 +28,8 @@ module ActiveStorageSupport
|
|
27
28
|
CODE
|
28
29
|
end
|
29
30
|
|
30
|
-
def has_many_base64_attached(name, dependent: :purge_later, service: nil, strict_loading: false)
|
31
|
-
has_many_attached name, dependent: dependent, service: service, strict_loading: strict_loading
|
31
|
+
def has_many_base64_attached(name, dependent: :purge_later, service: nil, strict_loading: false, &block)
|
32
|
+
has_many_attached name, dependent: dependent, service: service, strict_loading: strict_loading, &block
|
32
33
|
|
33
34
|
generated_association_methods.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
34
35
|
# frozen_string_literal: true
|
@@ -36,23 +37,17 @@ module ActiveStorageSupport
|
|
36
37
|
@active_storage_attached ||= {}
|
37
38
|
@active_storage_attached[:#{name}] ||= ActiveStorageSupport::Base64Many.new("#{name}", self)
|
38
39
|
end
|
40
|
+
|
39
41
|
def #{name}=(attachables)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
ActiveStorage::Attached::Changes::CreateMany.new(
|
46
|
-
"#{name}", self, ActiveStorageSupport::Base64Many.from_base64(attachables)
|
47
|
-
)
|
48
|
-
end
|
42
|
+
attachables = Array(attachables).compact_blank
|
43
|
+
pending_uploads = attachment_changes["#{name}"].try(:pending_uploads)
|
44
|
+
|
45
|
+
attachment_changes["#{name}"] = if attachables.none?
|
46
|
+
ActiveStorage::Attached::Changes::DeleteMany.new("#{name}", self)
|
49
47
|
else
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
"#{name}", self, #{name}.blobs + ActiveStorageSupport::Base64Many.from_base64(attachables)
|
54
|
-
)
|
55
|
-
end
|
48
|
+
ActiveStorage::Attached::Changes::CreateMany.new(
|
49
|
+
"#{name}", self, ActiveStorageSupport::Base64Many.from_base64(attachables), pending_uploads: pending_uploads
|
50
|
+
)
|
56
51
|
end
|
57
52
|
end
|
58
53
|
CODE
|
metadata
CHANGED
@@ -1,29 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_storage_base64
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ricardo Cortio
|
8
|
-
|
8
|
+
- Santiago Bartesaghi
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2023-09-19 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: activestorage
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - ">"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
+
version: '7.0'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- - "
|
25
|
+
- - ">"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
+
version: '7.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activesupport
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '7.0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '7.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rails
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '7.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '7.0'
|
27
56
|
- !ruby/object:Gem::Dependency
|
28
57
|
name: pry-rails
|
29
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +73,14 @@ dependencies:
|
|
44
73
|
requirements:
|
45
74
|
- - "~>"
|
46
75
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
76
|
+
version: 6.0.6
|
48
77
|
type: :development
|
49
78
|
prerelease: false
|
50
79
|
version_requirements: !ruby/object:Gem::Requirement
|
51
80
|
requirements:
|
52
81
|
- - "~>"
|
53
82
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
83
|
+
version: 6.0.6
|
55
84
|
- !ruby/object:Gem::Dependency
|
56
85
|
name: rspec-rails
|
57
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +101,14 @@ dependencies:
|
|
72
101
|
requirements:
|
73
102
|
- - "~>"
|
74
103
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
104
|
+
version: 1.22.0
|
76
105
|
type: :development
|
77
106
|
prerelease: false
|
78
107
|
version_requirements: !ruby/object:Gem::Requirement
|
79
108
|
requirements:
|
80
109
|
- - "~>"
|
81
110
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
111
|
+
version: 1.22.0
|
83
112
|
- !ruby/object:Gem::Dependency
|
84
113
|
name: simplecov
|
85
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,16 +129,32 @@ dependencies:
|
|
100
129
|
requirements:
|
101
130
|
- - '='
|
102
131
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.4.
|
132
|
+
version: 1.4.2
|
104
133
|
type: :development
|
105
134
|
prerelease: false
|
106
135
|
version_requirements: !ruby/object:Gem::Requirement
|
107
136
|
requirements:
|
108
137
|
- - '='
|
109
138
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.4.
|
139
|
+
version: 1.4.2
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: image_processing
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '1.2'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '1.2'
|
111
154
|
description: Base64 support for ActiveStorage
|
112
|
-
email:
|
155
|
+
email:
|
156
|
+
- ricardo@rootstrap.com
|
157
|
+
- santiago.bartesaghi@rootstrap.com
|
113
158
|
executables: []
|
114
159
|
extensions: []
|
115
160
|
extra_rdoc_files: []
|
@@ -125,7 +170,7 @@ homepage: https://github.com/rootstrap/active-storage-base64
|
|
125
170
|
licenses:
|
126
171
|
- MIT
|
127
172
|
metadata: {}
|
128
|
-
post_install_message:
|
173
|
+
post_install_message:
|
129
174
|
rdoc_options: []
|
130
175
|
require_paths:
|
131
176
|
- lib
|
@@ -133,16 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
178
|
requirements:
|
134
179
|
- - ">="
|
135
180
|
- !ruby/object:Gem::Version
|
136
|
-
version: 2.
|
181
|
+
version: 2.7.0
|
137
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
183
|
requirements:
|
139
184
|
- - ">="
|
140
185
|
- !ruby/object:Gem::Version
|
141
186
|
version: '0'
|
142
187
|
requirements: []
|
143
|
-
|
144
|
-
|
145
|
-
signing_key:
|
188
|
+
rubygems_version: 3.4.6
|
189
|
+
signing_key:
|
146
190
|
specification_version: 4
|
147
191
|
summary: Base64 support for ActiveStorage
|
148
192
|
test_files: []
|