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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b5828c669886bb3073bc9a325644f70785b9e7432fe34bf609369ae854472d1
4
- data.tar.gz: c20c99725925af7c67f86c4ad99fcc5add79a4c373db3c1d5ae6fe4c2b1a893b
3
+ metadata.gz: 50329593e0ee11acf4ebacbec758787518d0433e10d2c9134a214b43d22bb47c
4
+ data.tar.gz: 0333bd79a6dfe770ad5e41e1d07033958d6f572b31b01124b19d02fa057b0d7f
5
5
  SHA512:
6
- metadata.gz: 7d0adc41784932bd392d92f120fadea916633ccf659a2b2d5d3b6a305eee2ca093a6d82045e322b40a5d6349cfeae880db08c87f1972bb40e954f52dd1457c45
7
- data.tar.gz: adf193c0617237b63aaf251b0e0fe8ec0e48da5b3dc47d8a6e60a5b91ea976d3a205dd990a0a2b20d65bd21b70dc5eccbaed0a512a86c03445be84811fa5deda
6
+ metadata.gz: 900f493e4419043748672221e2976c34f67ccc63b0e28294a4a4dfafe7663771cea716f5695189be3842b96332465eca514484324baac800eecbb2da8e07d0bb
7
+ data.tar.gz: 00057050b0a79960dea5b809543ffc25eedc77d9f86e3d60de42d18e81086310ef51d6dbde74ed49a9aac3c0a00fe0f07d8ae02045ce5f9db4177bc4a1b371a0
data/CHANGELOG.md CHANGED
@@ -1,4 +1,30 @@
1
- ## Rails 6.1.0.rc1 (November 02, 2020) ##
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/master/activestorage/app/models/active_storage/blob.rb) and [Attachment](https://github.com/rails/rails/blob/master/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`.
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, :metadata).to_h.symbolize_keys
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!(id, record: nil)
78
- super(id, purpose: :blob_id)
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
- def has_one_attached(name, dependent: :purge_later, service: nil)
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
- def has_many_attached(name, dependent: :purge_later, service: nil)
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(mirror: :active_storage_mirror)
29
+ config.active_storage.queues = ActiveSupport::InheritableOptions.new
30
30
 
31
31
  config.active_storage.variable_content_types = %w(
32
32
  image/png
@@ -9,8 +9,8 @@ module ActiveStorage
9
9
  module VERSION
10
10
  MAJOR = 6
11
11
  MINOR = 1
12
- TINY = 0
13
- PRE = "rc1"
12
+ TINY = 2
13
+ PRE = "1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -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.fetch(:multipart_threshold, 100.megabytes)
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.0.rc1
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: 2020-11-02 00:00:00.000000000 Z
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1
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.0.rc1/activestorage/CHANGELOG.md
191
- documentation_uri: https://api.rubyonrails.org/v6.1.0.rc1/
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.0.rc1/activestorage
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: 1.3.1
207
+ version: '0'
208
208
  requirements: []
209
- rubygems_version: 3.1.4
209
+ rubygems_version: 3.0.3
210
210
  signing_key:
211
211
  specification_version: 4
212
212
  summary: Local and cloud file storage framework.