shrine 2.15.0 → 2.16.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.
Potentially problematic release.
This version of shrine might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/doc/advantages.md +4 -0
- data/doc/plugins/activerecord.md +3 -2
- data/doc/plugins/add_metadata.md +4 -2
- data/doc/plugins/backgrounding.md +6 -4
- data/doc/plugins/backup.md +4 -2
- data/doc/plugins/cached_attachment_data.md +5 -3
- data/doc/plugins/copy.md +3 -1
- data/doc/plugins/data_uri.md +3 -2
- data/doc/plugins/default_storage.md +5 -2
- data/doc/plugins/default_url.md +4 -2
- data/doc/plugins/default_url_options.md +5 -2
- data/doc/plugins/delete_promoted.md +6 -4
- data/doc/plugins/delete_raw.md +12 -3
- data/doc/plugins/derivation_endpoint.md +17 -6
- data/doc/plugins/determine_mime_type.md +3 -2
- data/doc/plugins/direct_upload.md +4 -2
- data/doc/plugins/download_endpoint.md +46 -6
- data/doc/plugins/dynamic_storage.md +5 -2
- data/doc/plugins/hooks.md +3 -1
- data/doc/plugins/included.md +5 -2
- data/doc/plugins/infer_extension.md +5 -4
- data/doc/plugins/keep_files.md +5 -3
- data/doc/plugins/logging.md +4 -1
- data/doc/plugins/metadata_attribues.md +6 -3
- data/doc/plugins/migration_helpers.md +4 -2
- data/doc/plugins/module_include.md +4 -2
- data/doc/plugins/moving.md +6 -4
- data/doc/plugins/multi_delete.md +4 -2
- data/doc/plugins/parallelize.md +4 -2
- data/doc/plugins/parsed_json.md +5 -3
- data/doc/plugins/presign_endpoint.md +7 -5
- data/doc/plugins/pretty_location.md +4 -2
- data/doc/plugins/processing.md +3 -2
- data/doc/plugins/rack_file.md +4 -2
- data/doc/plugins/rack_response.md +26 -10
- data/doc/plugins/recache.md +7 -5
- data/doc/plugins/refresh_metadata.md +4 -2
- data/doc/plugins/remote_url.md +3 -1
- data/doc/plugins/remove_attachment.md +4 -2
- data/doc/plugins/remove_invalid.md +6 -3
- data/doc/plugins/restore_cached_data.md +8 -6
- data/doc/plugins/sequel.md +4 -1
- data/doc/plugins/signature.md +5 -3
- data/doc/plugins/store_dimensions.md +4 -2
- data/doc/plugins/tempfile.md +4 -2
- data/doc/plugins/upload_endpoint.md +4 -3
- data/doc/plugins/upload_options.md +4 -2
- data/doc/plugins/validation_helpers.md +4 -2
- data/doc/plugins/versions.md +3 -2
- data/doc/release_notes/2.15.0.md +2 -2
- data/doc/release_notes/2.16.0.md +52 -0
- data/doc/storage/s3.md +2 -2
- data/lib/shrine/plugins/_urlsafe_serialization.rb +2 -0
- data/lib/shrine/plugins/activerecord.rb +3 -0
- data/lib/shrine/plugins/add_metadata.rb +3 -0
- data/lib/shrine/plugins/backgrounding.rb +3 -0
- data/lib/shrine/plugins/backup.rb +3 -0
- data/lib/shrine/plugins/cached_attachment_data.rb +3 -0
- data/lib/shrine/plugins/copy.rb +3 -0
- data/lib/shrine/plugins/data_uri.rb +3 -0
- data/lib/shrine/plugins/default_storage.rb +3 -0
- data/lib/shrine/plugins/default_url.rb +3 -0
- data/lib/shrine/plugins/default_url_options.rb +3 -0
- data/lib/shrine/plugins/delete_promoted.rb +3 -0
- data/lib/shrine/plugins/delete_raw.rb +4 -1
- data/lib/shrine/plugins/derivation_endpoint.rb +144 -47
- data/lib/shrine/plugins/determine_mime_type.rb +3 -0
- data/lib/shrine/plugins/direct_upload.rb +3 -0
- data/lib/shrine/plugins/download_endpoint.rb +29 -29
- data/lib/shrine/plugins/dynamic_storage.rb +3 -0
- data/lib/shrine/plugins/hooks.rb +3 -0
- data/lib/shrine/plugins/included.rb +3 -0
- data/lib/shrine/plugins/infer_extension.rb +3 -0
- data/lib/shrine/plugins/keep_files.rb +3 -0
- data/lib/shrine/plugins/logging.rb +3 -0
- data/lib/shrine/plugins/metadata_attributes.rb +3 -0
- data/lib/shrine/plugins/migration_helpers.rb +3 -0
- data/lib/shrine/plugins/module_include.rb +3 -0
- data/lib/shrine/plugins/moving.rb +3 -0
- data/lib/shrine/plugins/multi_delete.rb +3 -0
- data/lib/shrine/plugins/parallelize.rb +5 -1
- data/lib/shrine/plugins/parsed_json.rb +3 -0
- data/lib/shrine/plugins/presign_endpoint.rb +3 -0
- data/lib/shrine/plugins/pretty_location.rb +3 -0
- data/lib/shrine/plugins/processing.rb +3 -0
- data/lib/shrine/plugins/rack_file.rb +3 -0
- data/lib/shrine/plugins/rack_response.rb +14 -14
- data/lib/shrine/plugins/recache.rb +3 -0
- data/lib/shrine/plugins/refresh_metadata.rb +3 -0
- data/lib/shrine/plugins/remote_url.rb +3 -0
- data/lib/shrine/plugins/remove_attachment.rb +3 -0
- data/lib/shrine/plugins/remove_invalid.rb +3 -0
- data/lib/shrine/plugins/restore_cached_data.rb +3 -0
- data/lib/shrine/plugins/sequel.rb +3 -0
- data/lib/shrine/plugins/signature.rb +3 -0
- data/lib/shrine/plugins/store_dimensions.rb +4 -1
- data/lib/shrine/plugins/tempfile.rb +5 -0
- data/lib/shrine/plugins/upload_endpoint.rb +3 -0
- data/lib/shrine/plugins/upload_options.rb +3 -0
- data/lib/shrine/plugins/validation_helpers.rb +3 -0
- data/lib/shrine/plugins/versions.rb +3 -0
- data/lib/shrine/uploaded_file.rb +15 -7
- data/lib/shrine/version.rb +1 -1
- metadata +3 -2
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/remove_invalid.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/remove_invalid.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/remove_invalid.md
|
5
8
|
module RemoveInvalid
|
6
9
|
module AttacherMethods
|
7
10
|
def validate
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/restore_cached_data.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/restore_cached_data.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/restore_cached_data.md
|
5
8
|
module RestoreCachedData
|
6
9
|
def self.load_dependencies(uploader, *)
|
7
10
|
uploader.plugin :refresh_metadata
|
@@ -4,6 +4,9 @@ require "sequel"
|
|
4
4
|
|
5
5
|
class Shrine
|
6
6
|
module Plugins
|
7
|
+
# Documentation lives in [doc/plugins/sequel.md] on GitHub.
|
8
|
+
#
|
9
|
+
# [doc/plugins/sequel.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/sequel.md
|
7
10
|
module Sequel
|
8
11
|
def self.configure(uploader, opts = {})
|
9
12
|
uploader.opts[:sequel_callbacks] = opts.fetch(:callbacks, uploader.opts.fetch(:sequel_callbacks, true))
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/signature.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/signature.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/signature.md
|
5
8
|
module Signature
|
6
9
|
module ClassMethods
|
7
10
|
# Calculates `algorithm` hash of the contents of the IO object, and
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/store_dimensions.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/store_dimensions.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/store_dimensions.md
|
5
8
|
module StoreDimensions
|
6
9
|
def self.configure(uploader, opts = {})
|
7
10
|
uploader.opts[:dimensions_analyzer] = opts.fetch(:analyzer, uploader.opts.fetch(:dimensions_analyzer, :fastimage))
|
@@ -38,7 +41,7 @@ class Shrine
|
|
38
41
|
|
39
42
|
module InstanceMethods
|
40
43
|
# We update the metadata with "width" and "height".
|
41
|
-
def extract_metadata(io, context)
|
44
|
+
def extract_metadata(io, context = {})
|
42
45
|
width, height = extract_dimensions(io)
|
43
46
|
|
44
47
|
super.merge!("width" => width, "height" => height)
|
@@ -1,5 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Shrine
|
2
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/tempfile.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/tempfile.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/tempfile.md
|
3
8
|
module Tempfile
|
4
9
|
module ClassMethods
|
5
10
|
def with_file(io)
|
@@ -7,6 +7,9 @@ require "digest"
|
|
7
7
|
|
8
8
|
class Shrine
|
9
9
|
module Plugins
|
10
|
+
# Documentation lives in [doc/plugins/upload_endpoint.md] on GitHub.
|
11
|
+
#
|
12
|
+
# [doc/plugins/upload_endpoint.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/upload_endpoint.md
|
10
13
|
module UploadEndpoint
|
11
14
|
def self.load_dependencies(uploader, opts = {})
|
12
15
|
uploader.plugin :rack_file
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/upload_options.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/upload_options.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/upload_options.md
|
5
8
|
module UploadOptions
|
6
9
|
def self.configure(uploader, options = {})
|
7
10
|
uploader.opts[:upload_options] ||= {}
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/validation_helpers.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/validation_helpers.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/validation_helpers.md
|
5
8
|
module ValidationHelpers
|
6
9
|
def self.configure(uploader, opts = {})
|
7
10
|
uploader.opts[:validation_default_messages] ||= {}
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Shrine
|
4
4
|
module Plugins
|
5
|
+
# Documentation lives in [doc/plugins/versions.md] on GitHub.
|
6
|
+
#
|
7
|
+
# [doc/plugins/versions.md]: https://github.com/shrinerb/shrine/blob/master/doc/plugins/versions.md
|
5
8
|
module Versions
|
6
9
|
def self.load_dependencies(uploader, *)
|
7
10
|
uploader.plugin :default_url
|
data/lib/shrine/uploaded_file.rb
CHANGED
@@ -91,9 +91,9 @@ class Shrine
|
|
91
91
|
# # or
|
92
92
|
#
|
93
93
|
# uploaded_file.open { |io| io.read } # the IO is automatically closed
|
94
|
-
def open(
|
94
|
+
def open(**options)
|
95
95
|
@io.close if @io
|
96
|
-
@io =
|
96
|
+
@io = _open(**options)
|
97
97
|
|
98
98
|
return @io unless block_given?
|
99
99
|
|
@@ -120,9 +120,9 @@ class Shrine
|
|
120
120
|
# # or
|
121
121
|
#
|
122
122
|
# uploaded_file.download { |tempfile| tempfile.read } # tempfile is deleted
|
123
|
-
def download(
|
123
|
+
def download(**options)
|
124
124
|
tempfile = Tempfile.new(["shrine", ".#{extension}"], binmode: true)
|
125
|
-
stream(tempfile,
|
125
|
+
stream(tempfile, **options)
|
126
126
|
tempfile.open
|
127
127
|
|
128
128
|
block_given? ? yield(tempfile) : tempfile
|
@@ -141,12 +141,12 @@ class Shrine
|
|
141
141
|
# uploaded_file.stream(StringIO.new)
|
142
142
|
# # or
|
143
143
|
# uploaded_file.stream("/path/to/destination")
|
144
|
-
def stream(destination,
|
144
|
+
def stream(destination, **options)
|
145
145
|
if opened?
|
146
146
|
IO.copy_stream(io, destination)
|
147
147
|
io.rewind
|
148
148
|
else
|
149
|
-
open(
|
149
|
+
open(**options) { |io| IO.copy_stream(io, destination) }
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -251,7 +251,15 @@ class Shrine
|
|
251
251
|
# Returns an opened IO object for the uploaded file by calling `#open`
|
252
252
|
# on the storage.
|
253
253
|
def io
|
254
|
-
@io
|
254
|
+
@io ||= _open
|
255
|
+
end
|
256
|
+
|
257
|
+
def _open(**options)
|
258
|
+
if options.any?
|
259
|
+
storage.open(id, **options)
|
260
|
+
else
|
261
|
+
storage.open(id) # some storage implementations might not accept additional arguments
|
262
|
+
end
|
255
263
|
end
|
256
264
|
end
|
257
265
|
end
|
data/lib/shrine/version.rb
CHANGED
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.16.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: 2019-02-
|
11
|
+
date: 2019-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: down
|
@@ -445,6 +445,7 @@ files:
|
|
445
445
|
- doc/release_notes/2.13.0.md
|
446
446
|
- doc/release_notes/2.14.0.md
|
447
447
|
- doc/release_notes/2.15.0.md
|
448
|
+
- doc/release_notes/2.16.0.md
|
448
449
|
- doc/release_notes/2.2.0.md
|
449
450
|
- doc/release_notes/2.3.0.md
|
450
451
|
- doc/release_notes/2.3.1.md
|