activestorage 6.1.0.rc1 → 6.1.2.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activestorage might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -1
- data/README.md +1 -1
- data/app/controllers/active_storage/direct_uploads_controller.rb +1 -1
- data/app/models/active_storage/blob.rb +10 -2
- data/lib/active_storage/attached/model.rb +20 -6
- data/lib/active_storage/engine.rb +1 -1
- data/lib/active_storage/gem_version.rb +2 -2
- data/lib/active_storage/service/s3_service.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50329593e0ee11acf4ebacbec758787518d0433e10d2c9134a214b43d22bb47c
|
4
|
+
data.tar.gz: 0333bd79a6dfe770ad5e41e1d07033958d6f572b31b01124b19d02fa057b0d7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 900f493e4419043748672221e2976c34f67ccc63b0e28294a4a4dfafe7663771cea716f5695189be3842b96332465eca514484324baac800eecbb2da8e07d0bb
|
7
|
+
data.tar.gz: 00057050b0a79960dea5b809543ffc25eedc77d9f86e3d60de42d18e81086310ef51d6dbde74ed49a9aac3c0a00fe0f07d8ae02045ce5f9db4177bc4a1b371a0
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,30 @@
|
|
1
|
-
## Rails 6.1.
|
1
|
+
## Rails 6.1.2.1 (February 10, 2021) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 6.1.2 (February 09, 2021) ##
|
7
|
+
|
8
|
+
* No changes.
|
9
|
+
|
10
|
+
|
11
|
+
## Rails 6.1.1 (January 07, 2021) ##
|
12
|
+
|
13
|
+
* Fix S3 multipart uploads when threshold is larger than file.
|
14
|
+
|
15
|
+
*Matt Muller*
|
16
|
+
|
17
|
+
|
18
|
+
## Rails 6.1.0 (December 09, 2020) ##
|
19
|
+
|
20
|
+
* Change default queue name of the analysis (`:active_storage_analysis`) and
|
21
|
+
purge (`:active_storage_purge`) jobs to be the job adapter's default (`:default`).
|
22
|
+
|
23
|
+
*Rafael Mendonça França*
|
24
|
+
|
25
|
+
* Implement `strict_loading` on ActiveStorage associations.
|
26
|
+
|
27
|
+
*David Angulo*
|
2
28
|
|
3
29
|
* Remove deprecated support to pass `:combine_options` operations to `ActiveStorage::Transformers::ImageProcessing`.
|
4
30
|
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ You can read more about Active Storage in the [Active Storage Overview](https://
|
|
10
10
|
|
11
11
|
## Compared to other storage solutions
|
12
12
|
|
13
|
-
A key difference to how Active Storage works compared to other attachment solutions in Rails is through the use of built-in [Blob](https://github.com/rails/rails/blob/
|
13
|
+
A key difference to how Active Storage works compared to other attachment solutions in Rails is through the use of built-in [Blob](https://github.com/rails/rails/blob/main/activestorage/app/models/active_storage/blob.rb) and [Attachment](https://github.com/rails/rails/blob/main/activestorage/app/models/active_storage/attachment.rb) models (backed by Active Record). This means existing application models do not need to be modified with additional columns to associate with files. Active Storage uses polymorphic associations via the `Attachment` join model, which then connects to the actual `Blob`.
|
14
14
|
|
15
15
|
`Blob` models store attachment metadata (filename, content-type, etc.), and their identifier key in the storage service. Blob models do not store the actual binary data. They are intended to be immutable in spirit. One file, one blob. You can associate the same blob with multiple application models as well. And if you want to do transformations of a given `Blob`, the idea is that you'll simply create a new one, rather than attempt to mutate the existing one (though of course you can delete the previous version later if you don't need it).
|
16
16
|
|
@@ -11,7 +11,7 @@ class ActiveStorage::DirectUploadsController < ActiveStorage::BaseController
|
|
11
11
|
|
12
12
|
private
|
13
13
|
def blob_args
|
14
|
-
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :
|
14
|
+
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, metadata: {}).to_h.symbolize_keys
|
15
15
|
end
|
16
16
|
|
17
17
|
def direct_upload_json(blob)
|
@@ -74,8 +74,16 @@ class ActiveStorage::Blob < ActiveStorage::Record
|
|
74
74
|
# that was created ahead of the upload itself on form submission.
|
75
75
|
#
|
76
76
|
# The signed ID is also used to create stable URLs for the blob through the BlobsController.
|
77
|
-
def find_signed
|
78
|
-
super(id, purpose:
|
77
|
+
def find_signed(id, record: nil, purpose: :blob_id)
|
78
|
+
super(id, purpose: purpose)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Works like +find_signed+, but will raise an +ActiveSupport::MessageVerifier::InvalidSignature+
|
82
|
+
# exception if the +signed_id+ has either expired, has a purpose mismatch, is for another record,
|
83
|
+
# or has been tampered with. It will also raise an +ActiveRecord::RecordNotFound+ exception if
|
84
|
+
# the valid signed id can't find a record.
|
85
|
+
def find_signed!(id, record: nil, purpose: :blob_id)
|
86
|
+
super(id, purpose: purpose)
|
79
87
|
end
|
80
88
|
|
81
89
|
def build_after_upload(io:, filename:, content_type: nil, metadata: nil, service_name: nil, identify: true, record: nil) #:nodoc:
|
@@ -40,7 +40,14 @@ module ActiveStorage
|
|
40
40
|
# has_one_attached :avatar, service: :s3
|
41
41
|
# end
|
42
42
|
#
|
43
|
-
|
43
|
+
# If you need to enable +strict_loading+ to prevent lazy loading of attachment,
|
44
|
+
# pass the +:strict_loading+ option. You can do:
|
45
|
+
#
|
46
|
+
# class User < ApplicationRecord
|
47
|
+
# has_one_attached :avatar, strict_loading: true
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
def has_one_attached(name, dependent: :purge_later, service: nil, strict_loading: false)
|
44
51
|
validate_service_configuration(name, service)
|
45
52
|
|
46
53
|
generated_association_methods.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
@@ -60,8 +67,8 @@ module ActiveStorage
|
|
60
67
|
end
|
61
68
|
CODE
|
62
69
|
|
63
|
-
has_one :"#{name}_attachment", -> { where(name: name) }, class_name: "ActiveStorage::Attachment", as: :record, inverse_of: :record, dependent: :destroy
|
64
|
-
has_one :"#{name}_blob", through: :"#{name}_attachment", class_name: "ActiveStorage::Blob", source: :blob
|
70
|
+
has_one :"#{name}_attachment", -> { where(name: name) }, class_name: "ActiveStorage::Attachment", as: :record, inverse_of: :record, dependent: :destroy, strict_loading: strict_loading
|
71
|
+
has_one :"#{name}_blob", through: :"#{name}_attachment", class_name: "ActiveStorage::Blob", source: :blob, strict_loading: strict_loading
|
65
72
|
|
66
73
|
scope :"with_attached_#{name}", -> { includes("#{name}_attachment": :blob) }
|
67
74
|
|
@@ -111,7 +118,14 @@ module ActiveStorage
|
|
111
118
|
# has_many_attached :photos, service: :s3
|
112
119
|
# end
|
113
120
|
#
|
114
|
-
|
121
|
+
# If you need to enable +strict_loading+ to prevent lazy loading of attachments,
|
122
|
+
# pass the +:strict_loading+ option. You can do:
|
123
|
+
#
|
124
|
+
# class Gallery < ApplicationRecord
|
125
|
+
# has_many_attached :photos, strict_loading: true
|
126
|
+
# end
|
127
|
+
#
|
128
|
+
def has_many_attached(name, dependent: :purge_later, service: nil, strict_loading: false)
|
115
129
|
validate_service_configuration(name, service)
|
116
130
|
|
117
131
|
generated_association_methods.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
@@ -138,7 +152,7 @@ module ActiveStorage
|
|
138
152
|
end
|
139
153
|
CODE
|
140
154
|
|
141
|
-
has_many :"#{name}_attachments", -> { where(name: name) }, as: :record, class_name: "ActiveStorage::Attachment", inverse_of: :record, dependent: :destroy do
|
155
|
+
has_many :"#{name}_attachments", -> { where(name: name) }, as: :record, class_name: "ActiveStorage::Attachment", inverse_of: :record, dependent: :destroy, strict_loading: strict_loading do
|
142
156
|
def purge
|
143
157
|
each(&:purge)
|
144
158
|
reset
|
@@ -149,7 +163,7 @@ module ActiveStorage
|
|
149
163
|
reset
|
150
164
|
end
|
151
165
|
end
|
152
|
-
has_many :"#{name}_blobs", through: :"#{name}_attachments", class_name: "ActiveStorage::Blob", source: :blob
|
166
|
+
has_many :"#{name}_blobs", through: :"#{name}_attachments", class_name: "ActiveStorage::Blob", source: :blob, strict_loading: strict_loading
|
153
167
|
|
154
168
|
scope :"with_attached_#{name}", -> { includes("#{name}_attachments": :blob) }
|
155
169
|
|
@@ -26,7 +26,7 @@ module ActiveStorage
|
|
26
26
|
config.active_storage.previewers = [ ActiveStorage::Previewer::PopplerPDFPreviewer, ActiveStorage::Previewer::MuPDFPreviewer, ActiveStorage::Previewer::VideoPreviewer ]
|
27
27
|
config.active_storage.analyzers = [ ActiveStorage::Analyzer::ImageAnalyzer, ActiveStorage::Analyzer::VideoAnalyzer ]
|
28
28
|
config.active_storage.paths = ActiveSupport::OrderedOptions.new
|
29
|
-
config.active_storage.queues = ActiveSupport::InheritableOptions.new
|
29
|
+
config.active_storage.queues = ActiveSupport::InheritableOptions.new
|
30
30
|
|
31
31
|
config.active_storage.variable_content_types = %w(
|
32
32
|
image/png
|
@@ -16,7 +16,7 @@ module ActiveStorage
|
|
16
16
|
@client = Aws::S3::Resource.new(**options)
|
17
17
|
@bucket = @client.bucket(bucket)
|
18
18
|
|
19
|
-
@multipart_upload_threshold = upload.
|
19
|
+
@multipart_upload_threshold = upload.delete(:multipart_threshold) || 100.megabytes
|
20
20
|
@public = public
|
21
21
|
|
22
22
|
@upload_options = upload
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activestorage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
4
|
+
version: 6.1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.1.
|
19
|
+
version: 6.1.2.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.1.
|
26
|
+
version: 6.1.2.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 6.1.
|
33
|
+
version: 6.1.2.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 6.1.
|
40
|
+
version: 6.1.2.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: activejob
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 6.1.
|
47
|
+
version: 6.1.2.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 6.1.
|
54
|
+
version: 6.1.2.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activerecord
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 6.1.
|
61
|
+
version: 6.1.2.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 6.1.
|
68
|
+
version: 6.1.2.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: marcel
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,10 +187,10 @@ licenses:
|
|
187
187
|
- MIT
|
188
188
|
metadata:
|
189
189
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
190
|
-
changelog_uri: https://github.com/rails/rails/blob/v6.1.
|
191
|
-
documentation_uri: https://api.rubyonrails.org/v6.1.
|
190
|
+
changelog_uri: https://github.com/rails/rails/blob/v6.1.2.1/activestorage/CHANGELOG.md
|
191
|
+
documentation_uri: https://api.rubyonrails.org/v6.1.2.1/
|
192
192
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
193
|
-
source_code_uri: https://github.com/rails/rails/tree/v6.1.
|
193
|
+
source_code_uri: https://github.com/rails/rails/tree/v6.1.2.1/activestorage
|
194
194
|
post_install_message:
|
195
195
|
rdoc_options: []
|
196
196
|
require_paths:
|
@@ -202,11 +202,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
202
|
version: 2.5.0
|
203
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
204
|
requirements:
|
205
|
-
- - "
|
205
|
+
- - ">="
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version:
|
207
|
+
version: '0'
|
208
208
|
requirements: []
|
209
|
-
rubygems_version: 3.
|
209
|
+
rubygems_version: 3.0.3
|
210
210
|
signing_key:
|
211
211
|
specification_version: 4
|
212
212
|
summary: Local and cloud file storage framework.
|