shrine 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of shrine might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +681 -0
- data/README.md +73 -21
- data/doc/carrierwave.md +75 -20
- data/doc/creating_storages.md +15 -26
- data/doc/direct_s3.md +113 -31
- data/doc/multiple_files.md +4 -8
- data/doc/paperclip.md +98 -31
- data/doc/refile.md +4 -6
- data/doc/testing.md +24 -21
- data/lib/shrine.rb +32 -20
- data/lib/shrine/plugins/activerecord.rb +2 -0
- data/lib/shrine/plugins/add_metadata.rb +2 -0
- data/lib/shrine/plugins/background_helpers.rb +2 -0
- data/lib/shrine/plugins/backgrounding.rb +11 -4
- data/lib/shrine/plugins/backup.rb +2 -0
- data/lib/shrine/plugins/cached_attachment_data.rb +2 -0
- data/lib/shrine/plugins/copy.rb +2 -0
- data/lib/shrine/plugins/data_uri.rb +20 -12
- data/lib/shrine/plugins/default_storage.rb +2 -0
- data/lib/shrine/plugins/default_url.rb +2 -0
- data/lib/shrine/plugins/default_url_options.rb +2 -0
- data/lib/shrine/plugins/delete_promoted.rb +2 -0
- data/lib/shrine/plugins/delete_raw.rb +2 -0
- data/lib/shrine/plugins/determine_mime_type.rb +18 -2
- data/lib/shrine/plugins/direct_upload.rb +6 -6
- data/lib/shrine/plugins/download_endpoint.rb +2 -0
- data/lib/shrine/plugins/dynamic_storage.rb +2 -0
- data/lib/shrine/plugins/hooks.rb +2 -0
- data/lib/shrine/plugins/included.rb +2 -0
- data/lib/shrine/plugins/infer_extension.rb +131 -0
- data/lib/shrine/plugins/keep_files.rb +2 -0
- data/lib/shrine/plugins/logging.rb +6 -4
- data/lib/shrine/plugins/metadata_attributes.rb +2 -0
- data/lib/shrine/plugins/migration_helpers.rb +2 -0
- data/lib/shrine/plugins/module_include.rb +2 -0
- data/lib/shrine/plugins/moving.rb +2 -0
- data/lib/shrine/plugins/multi_delete.rb +4 -0
- data/lib/shrine/plugins/parallelize.rb +2 -0
- data/lib/shrine/plugins/parsed_json.rb +2 -0
- data/lib/shrine/plugins/presign_endpoint.rb +7 -7
- data/lib/shrine/plugins/pretty_location.rb +2 -0
- data/lib/shrine/plugins/processing.rb +2 -0
- data/lib/shrine/plugins/rack_file.rb +2 -0
- data/lib/shrine/plugins/rack_response.rb +2 -0
- data/lib/shrine/plugins/recache.rb +2 -0
- data/lib/shrine/plugins/refresh_metadata.rb +2 -0
- data/lib/shrine/plugins/remote_url.rb +12 -1
- data/lib/shrine/plugins/remove_attachment.rb +2 -0
- data/lib/shrine/plugins/remove_invalid.rb +2 -0
- data/lib/shrine/plugins/restore_cached_data.rb +2 -0
- data/lib/shrine/plugins/sequel.rb +2 -0
- data/lib/shrine/plugins/signature.rb +10 -8
- data/lib/shrine/plugins/store_dimensions.rb +5 -3
- data/lib/shrine/plugins/upload_endpoint.rb +7 -8
- data/lib/shrine/plugins/upload_options.rb +2 -0
- data/lib/shrine/plugins/validation_helpers.rb +2 -0
- data/lib/shrine/plugins/versions.rb +72 -31
- data/lib/shrine/storage/file_system.rb +11 -4
- data/lib/shrine/storage/linter.rb +5 -13
- data/lib/shrine/storage/s3.rb +16 -13
- data/lib/shrine/version.rb +3 -1
- data/shrine.gemspec +7 -6
- metadata +26 -10
data/lib/shrine/storage/s3.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "shrine"
|
2
4
|
begin
|
3
5
|
require "aws-sdk-s3"
|
4
6
|
if Gem::Version.new(Aws::S3::GEM_VERSION) < Gem::Version.new("1.2.0")
|
5
7
|
raise "Shrine::Storage::S3 requires aws-sdk-s3 version 1.2.0 or above"
|
6
8
|
end
|
7
|
-
rescue LoadError
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
rescue LoadError => exception
|
10
|
+
begin
|
11
|
+
require "aws-sdk"
|
12
|
+
Shrine.deprecation("Using aws-sdk 2.x is deprecated and support for it will be removed in Shrine 3, use the new aws-sdk-s3 gem instead.")
|
13
|
+
Aws.eager_autoload!(services: ["S3"])
|
14
|
+
rescue LoadError
|
15
|
+
raise exception
|
16
|
+
end
|
11
17
|
end
|
12
18
|
require "down/chunked_io"
|
13
19
|
require "uri"
|
@@ -256,6 +262,9 @@ class Shrine
|
|
256
262
|
tempfile.singleton_class.instance_eval { attr_accessor :content_type }
|
257
263
|
tempfile.content_type = object.content_type
|
258
264
|
tempfile.tap(&:open)
|
265
|
+
rescue
|
266
|
+
tempfile.close! if tempfile
|
267
|
+
raise
|
259
268
|
end
|
260
269
|
|
261
270
|
# Returns a `Down::ChunkedIO` object representing the S3 object. Any
|
@@ -332,12 +341,6 @@ class Shrine
|
|
332
341
|
object(id).delete
|
333
342
|
end
|
334
343
|
|
335
|
-
# Deletes multiple files at once from the storage.
|
336
|
-
def multi_delete(ids)
|
337
|
-
objects_to_delete = ids.map { |id| object(id) }
|
338
|
-
delete_objects(objects_to_delete)
|
339
|
-
end
|
340
|
-
|
341
344
|
# If block is given, deletes all objects from the storage for which the
|
342
345
|
# block evaluates to true. Otherwise deletes all objects from the storage.
|
343
346
|
#
|
@@ -377,7 +380,7 @@ class Shrine
|
|
377
380
|
# large files.
|
378
381
|
def copy(io, id, **options)
|
379
382
|
# pass :content_length on multipart copy to avoid an additional HEAD request
|
380
|
-
options = {multipart_copy: true, content_length: io.size}.
|
383
|
+
options = { multipart_copy: true, content_length: io.size }.merge!(options) if io.size && io.size >= @multipart_threshold[:copy]
|
381
384
|
object(id).copy_from(io.storage.object(io.id), **options)
|
382
385
|
end
|
383
386
|
|
@@ -391,7 +394,7 @@ class Shrine
|
|
391
394
|
|
392
395
|
if path
|
393
396
|
# use `upload_file` for files because it can do multipart upload
|
394
|
-
options = {multipart_threshold: @multipart_threshold[:upload]}.
|
397
|
+
options = { multipart_threshold: @multipart_threshold[:upload] }.merge!(options)
|
395
398
|
object(id).upload_file(path, **options)
|
396
399
|
else
|
397
400
|
object(id).put(body: io, **options)
|
@@ -419,7 +422,7 @@ class Shrine
|
|
419
422
|
# should automatically URI-decode filenames when downloading.
|
420
423
|
def encode_content_disposition(content_disposition)
|
421
424
|
content_disposition.sub(/(?<=filename=").+(?=")/) do |filename|
|
422
|
-
CGI.escape(filename).
|
425
|
+
CGI.escape(filename).gsub("+", " ")
|
423
426
|
end
|
424
427
|
end
|
425
428
|
end
|
data/lib/shrine/version.rb
CHANGED
data/shrine.gemspec
CHANGED
@@ -23,23 +23,24 @@ direct uploads for fully asynchronous user experience.
|
|
23
23
|
gem.email = ["janko.marohnic@gmail.com"]
|
24
24
|
gem.license = "MIT"
|
25
25
|
|
26
|
-
gem.files = Dir["README.md", "LICENSE.txt", "lib/**/*.rb", "shrine.gemspec", "doc/*.md"]
|
26
|
+
gem.files = Dir["README.md", "LICENSE.txt", "CHANGELOG.md", "lib/**/*.rb", "shrine.gemspec", "doc/*.md"]
|
27
27
|
gem.require_path = "lib"
|
28
28
|
|
29
29
|
gem.add_dependency "down", "~> 4.1"
|
30
30
|
|
31
|
-
gem.add_development_dependency "rake", "
|
31
|
+
gem.add_development_dependency "rake", ">= 11.1"
|
32
32
|
gem.add_development_dependency "minitest", "~> 5.8"
|
33
|
-
gem.add_development_dependency "minitest-hooks", "~> 1.3
|
33
|
+
gem.add_development_dependency "minitest-hooks", "~> 1.3"
|
34
34
|
gem.add_development_dependency "mocha"
|
35
35
|
gem.add_development_dependency "rack-test_app"
|
36
36
|
gem.add_development_dependency "shrine-memory", ">= 0.2.2"
|
37
37
|
|
38
38
|
gem.add_development_dependency "roda"
|
39
39
|
gem.add_development_dependency "rack"
|
40
|
-
gem.add_development_dependency "mimemagic"
|
40
|
+
gem.add_development_dependency "mimemagic", ">= 0.3.2"
|
41
|
+
gem.add_development_dependency "marcel" if RUBY_VERSION >= "2.2.0"
|
41
42
|
gem.add_development_dependency "mime-types"
|
42
|
-
gem.add_development_dependency "mini_mime"
|
43
|
+
gem.add_development_dependency "mini_mime", "~> 1.0"
|
43
44
|
gem.add_development_dependency "fastimage"
|
44
45
|
gem.add_development_dependency "aws-sdk-s3", "~> 1.2"
|
45
46
|
|
@@ -51,7 +52,7 @@ direct uploads for fully asynchronous user experience.
|
|
51
52
|
gem.add_development_dependency "activerecord", "~> 4.2"
|
52
53
|
|
53
54
|
if RUBY_ENGINE == "jruby"
|
54
|
-
gem.add_development_dependency "activerecord-jdbcsqlite3-adapter"
|
55
|
+
gem.add_development_dependency "activerecord-jdbcsqlite3-adapter", "1.3.24"
|
55
56
|
else
|
56
57
|
gem.add_development_dependency "sqlite3"
|
57
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shrine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janko Marohnić
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: down
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '11.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '11.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.3
|
61
|
+
version: '1.3'
|
62
62
|
type: :development
|
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: 1.3
|
68
|
+
version: '1.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,16 +142,16 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 0.3.2
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 0.3.2
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: marcel
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: mime-types
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: mini_mime
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '1.0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '1.0'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: fastimage
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -277,6 +291,7 @@ executables: []
|
|
277
291
|
extensions: []
|
278
292
|
extra_rdoc_files: []
|
279
293
|
files:
|
294
|
+
- CHANGELOG.md
|
280
295
|
- LICENSE.txt
|
281
296
|
- README.md
|
282
297
|
- doc/attacher.md
|
@@ -313,6 +328,7 @@ files:
|
|
313
328
|
- lib/shrine/plugins/dynamic_storage.rb
|
314
329
|
- lib/shrine/plugins/hooks.rb
|
315
330
|
- lib/shrine/plugins/included.rb
|
331
|
+
- lib/shrine/plugins/infer_extension.rb
|
316
332
|
- lib/shrine/plugins/keep_files.rb
|
317
333
|
- lib/shrine/plugins/logging.rb
|
318
334
|
- lib/shrine/plugins/metadata_attributes.rb
|