image_vise 0.8.2 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 448a0d9a3decdcb6af4a3c0dc52fbed811bca85a8ba1df2775916ee164dffdcf
4
- data.tar.gz: 3bb7300d2622d442ebe559195276e1ab753a9f1268b955fe2427362041f35036
3
+ metadata.gz: db4e835de55f61d43df27411213d6b121bd586c3cd3e25c09010d02afc58ba27
4
+ data.tar.gz: 5d5235feae9b5310f7c35f8ebbbc582efc7f191dfe686cc8dda2de8c3fe948f8
5
5
  SHA512:
6
- metadata.gz: c71485f40a843adfc42887ef0d3766df61c83457bb3cbc92763e1c172c82a74ba7b1aba8472f9f16e79a2a35469648d361e7f6a0c85f5bfddba2f8f662283b5d
7
- data.tar.gz: 6863b83f51d044589e20c6cf40ff6e6843f148374cea3a8c036a9af8fef99f626f6ef941a83bd80a44159eaed2a1a85122c7a2444510a006fddf8825f3195954
6
+ metadata.gz: 5d1b4d6d6b62344c2cdc2073dca78ba16a485e9d7dca852f249313194d33c29df857460291db1531ff526adbcfb4353243aa2b777f482673916a607dc23c7608
7
+ data.tar.gz: 9909a197b5488f6e1c348e6fb57b5d12c43b22dc98e9841c9b0ee98c801f8073813ad979bf1af3860e2872f07a6ef23b30095014bb491eec5c0559b3dc790302
data/.travis.yml CHANGED
@@ -1,8 +1,7 @@
1
+ language: ruby
1
2
  rvm:
2
- - 2.4.4
3
- - 2.5.1
4
- - 2.6.2
5
- sudo: false
3
+ - 2.5
4
+ - 3.0.2
6
5
  cache: bundler
7
6
  env:
8
7
  global:
data/CHANGELOG.md CHANGED
@@ -1,2 +1,7 @@
1
+ ## 1.0.0
2
+ * Add support for Ruby 2.6 and newer (including Ruby 3.0)
3
+ * Minimum supported Ruby is now 2.5
4
+ * Remove `ks` dependency
5
+
1
6
  ## 0.8.2
2
7
  * Change format_parser required version to allow > 0.24
data/DEVELOPMENT.md CHANGED
@@ -62,9 +62,9 @@ path access using the glob whitelist)
62
62
  class PicFetcher < ImageVise::FetcherFile
63
63
  def self.fetch_uri_to_tempfile(uri_object)
64
64
  # Convert an internal "pic://sites/uploads/abcdef.jpg" to a full path URL
65
- partial_path = URI.decode(uri_object.path)
66
- full_path = File.join(Mappe::ROOT, 'sites', partial_path)
67
- full_path_uri = URI('file://' + URI.encode(full_path))
65
+ partial_path = decode_file_uri_path(uri_object.path)
66
+ full_filesystem_path = File.join(Mappe::ROOT, 'sites', partial_path)
67
+ full_path_uri = URI(file_url_for(full_filesystem_path))
68
68
  super(full_path_uri)
69
69
  end
70
70
  ImageVise.register_fetcher 'pic', self
data/README.md CHANGED
@@ -95,7 +95,7 @@ end
95
95
 
96
96
  If you want to grab a local file, compose a `file://` URL (mind the endcoding!)
97
97
 
98
- src_url = 'file://' + URI.encode(File.expand_path(my_pic))
98
+ src_url = 'file://' + ImageVise::FetcherFile.encode_file_uri_path(File.expand_path(my_pic))
99
99
 
100
100
  Note that you need to permit certain glob patterns as sources before this will work, see below.
101
101
 
data/image_vise.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
  raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
23
  end
24
24
 
25
+ spec.required_ruby_version = ">= 2.5"
26
+
25
27
  spec.files = `git ls-files -z`.split("\x0")
26
28
  spec.bindir = "exe"
27
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -29,18 +31,16 @@ Gem::Specification.new do |spec|
29
31
 
30
32
  spec.add_dependency 'patron', '~> 0.9'
31
33
  spec.add_dependency 'rmagick', '~> 3'
32
- spec.add_dependency 'ks'
33
34
  spec.add_dependency 'rack', '>= 1', '< 3'
34
35
  spec.add_dependency 'format_parser', '~> 0.25'
35
36
  spec.add_dependency 'measurometer', '~> 1'
36
37
 
37
38
  spec.add_development_dependency 'magic_bytes', '~> 1'
38
- spec.add_development_dependency "bundler"
39
39
  spec.add_development_dependency "rake", "~> 12.2"
40
40
  spec.add_development_dependency "rack-test"
41
41
  spec.add_development_dependency "rspec", "~> 3"
42
- spec.add_development_dependency "addressable"
43
42
  spec.add_development_dependency "strenv"
44
43
  spec.add_development_dependency "simplecov"
45
44
  spec.add_development_dependency "pry"
45
+ spec.add_development_dependency "webrick"
46
46
  end
data/lib/image_vise.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'ks'
2
1
  require 'json'
3
2
  require 'patron'
4
3
  require 'rmagick'
@@ -21,8 +21,20 @@ class ImageVise::FetcherFile
21
21
  raise e
22
22
  end
23
23
 
24
+ def self.decode_file_uri_path(path_with_percent_encoded_components)
25
+ path_with_percent_encoded_components.split('/').map { |component| URI.decode_www_form_component(component) }.join('/')
26
+ end
27
+
28
+ def self.file_url_for(path)
29
+ "file://#{encode_file_uri_path(path)}"
30
+ end
31
+
32
+ def self.encode_file_uri_path(path)
33
+ path.split('/').map { |component| URI.encode_www_form_component(component) }.join('/')
34
+ end
35
+
24
36
  def self.uri_to_path(uri)
25
- File.expand_path(URI.decode(uri.path))
37
+ File.expand_path(decode_file_uri_path(uri.path))
26
38
  end
27
39
 
28
40
  def self.verify_filesystem_access!(path_on_filesystem)
@@ -1,6 +1,6 @@
1
1
  require 'openssl'
2
2
 
3
- class ImageVise::ImageRequest < Ks.strict(:src_url, :pipeline)
3
+ class ImageVise::ImageRequest < Struct.new(:src_url, :pipeline, keyword_init: true)
4
4
  class InvalidRequest < ArgumentError; end
5
5
  class SignatureError < InvalidRequest; end
6
6
  class URLError < InvalidRequest; end
@@ -2,7 +2,7 @@
2
2
  # Can handle most 'word' colors and hex color codes but not RGB values.
3
3
  #
4
4
  # The corresponding Pipeline method is `background_fill`.
5
- class ImageVise::BackgroundFill < Ks.strict(:color)
5
+ class ImageVise::BackgroundFill < Struct.new(:color, keyword_init: true)
6
6
  def initialize(*)
7
7
  super
8
8
  self.color = color.to_s
@@ -2,7 +2,7 @@
2
2
  # of ImageMagick gravity parameters (see GRAVITY_PARAMS)
3
3
  #
4
4
  # The corresponding Pipeline method is `crop`.
5
- class ImageVise::Crop < Ks.strict(:width, :height, :gravity)
5
+ class ImageVise::Crop < Struct.new(:width, :height, :gravity, keyword_init: true)
6
6
  GRAVITY_PARAMS = {
7
7
  'nw' => Magick::NorthWestGravity,
8
8
  'n' => Magick::NorthGravity,
@@ -1,7 +1,7 @@
1
1
  # Overrides the cache lifetime set in the output headers of the RenderEngine.
2
2
  # Can be used to permit the requester to set the caching lifetime, instead
3
3
  # of it being a configuration variable in the service performing the rendering
4
- class ImageVise::ExpireAfter < Ks.strict(:seconds)
4
+ class ImageVise::ExpireAfter < Struct.new(:seconds, keyword_init: true)
5
5
  def initialize(seconds:)
6
6
  unless seconds.is_a?(Integer) && seconds > 0
7
7
  raise ArgumentError, "the :seconds parameter must be an Integer and must be above 0, but was %s" % seconds.inspect
@@ -3,7 +3,7 @@
3
3
  # gravity parameter defines the crop gravity (on corners, sides, or in the middle).
4
4
  #
5
5
  # The corresponding Pipeline method is `fit_crop`.
6
- class ImageVise::FitCrop < Ks.strict(:width, :height, :gravity)
6
+ class ImageVise::FitCrop < Struct.new(:width, :height, :gravity, keyword_init: true)
7
7
  GRAVITY_PARAMS = {
8
8
  'nw' => Magick::NorthWestGravity,
9
9
  'n' => Magick::NorthGravity,
@@ -1,7 +1,7 @@
1
1
  # Forces the output format to be JPEG and specifies the quality factor to use when saving
2
2
  #
3
3
  # The corresponding Pipeline method is `force_jpg_out`.
4
- class ImageVise::ForceJPGOut < Ks.strict(:quality)
4
+ class ImageVise::ForceJPGOut < Struct.new(:quality, keyword_init: true)
5
5
  def initialize(quality:)
6
6
  unless (0..100).cover?(quality)
7
7
  raise ArgumentError, "the :quality setting must be within 0..100, but was %d" % quality
@@ -1,7 +1,7 @@
1
1
  # Applies a transformation using an ImageMagick geometry string
2
2
  #
3
3
  # The corresponding Pipeline method is `geom`.
4
- class ImageVise::Geom < Ks.strict(:geometry_string)
4
+ class ImageVise::Geom < Struct.new(:geometry_string, keyword_init: true)
5
5
  def initialize(*)
6
6
  super
7
7
  self.geometry_string = geometry_string.to_s
@@ -1,7 +1,7 @@
1
1
  # Applies a sharpening filter to the image.
2
2
  #
3
3
  # The corresponding Pipeline method is `sharpen`.
4
- class ImageVise::Sharpen < Ks.strict(:radius, :sigma)
4
+ class ImageVise::Sharpen < Struct.new(:radius, :sigma, keyword_init: true)
5
5
  def initialize(*)
6
6
  super
7
7
  self.radius = radius.to_f
@@ -27,11 +27,16 @@ class ImageVise::Pipeline
27
27
  @ops.empty?
28
28
  end
29
29
 
30
- def method_missing(method_name, *a, &blk)
30
+ def method_missing(method_name, args = {}, &blk)
31
31
  operator_builder = ImageVise.operator_from(method_name)
32
- self << operator_builder.new(*a)
32
+
33
+ if args.empty? # TODO: remove conditional after dropping Ruby 2.6 support
34
+ self << operator_builder.new
35
+ else
36
+ self << operator_builder.new(**args)
37
+ end
33
38
  end
34
-
39
+
35
40
  def respond_to_missing?(method_name, *a)
36
41
  ImageVise.defined_operators.include?(method_name.to_s)
37
42
  end
@@ -1,3 +1,3 @@
1
1
  class ImageVise
2
- VERSION = '0.8.2'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,4 +1,4 @@
1
- class ImageVise::JPGWriter < Ks.strict(:quality)
1
+ class ImageVise::JPGWriter < Struct.new(:quality, keyword_init: true)
2
2
  JPG_EXT = 'jpg'
3
3
 
4
4
  def write_image!(magick_image, _, render_to_path)
@@ -8,13 +8,13 @@ describe ImageVise::FetcherFile do
8
8
  it 'is registered as a fetcher for file://' do
9
9
  expect(ImageVise.fetcher_for('file')).to eq(ImageVise::FetcherFile)
10
10
  end
11
-
11
+
12
12
  it 'returns a Tempfile containing this test suite' do
13
13
  path = File.expand_path(__FILE__)
14
14
  ruby_files_in_this_directory = __dir__ + '/*.rb'
15
15
  ImageVise.allow_filesystem_source! ruby_files_in_this_directory
16
-
17
- uri = URI('file://' + URI.encode(path))
16
+
17
+ uri = URI('file://' + ImageVise::FetcherFile.encode_file_uri_path(path))
18
18
  fetched = ImageVise::FetcherFile.fetch_uri_to_tempfile(uri)
19
19
 
20
20
  expect(fetched).to be_kind_of(Tempfile)
@@ -27,7 +27,7 @@ describe ImageVise::FetcherFile do
27
27
 
28
28
  ImageVise.deny_filesystem_sources!
29
29
 
30
- uri = URI('file://' + URI.encode(path))
30
+ uri = URI('file://' + ImageVise::FetcherFile.encode_file_uri_path(path))
31
31
  expect {
32
32
  ImageVise::FetcherFile.fetch_uri_to_tempfile(uri)
33
33
  }.to raise_error(ImageVise::FetcherFile::AccessError)
@@ -40,7 +40,7 @@ describe ImageVise::FetcherFile do
40
40
  ImageVise.deny_filesystem_sources!
41
41
  ImageVise.allow_filesystem_source! text_files_in_this_directory
42
42
 
43
- uri = URI('file://' + URI.encode(path))
43
+ uri = URI('file://' + ImageVise::FetcherFile.encode_file_uri_path(path))
44
44
  expect {
45
45
  ImageVise::FetcherFile.fetch_uri_to_tempfile(uri)
46
46
  }.to raise_error(ImageVise::FetcherFile::AccessError)
@@ -51,7 +51,7 @@ describe ImageVise::FetcherFile do
51
51
  ruby_files_in_this_directory = __dir__ + '/*.rb'
52
52
  ImageVise.allow_filesystem_source! ruby_files_in_this_directory
53
53
 
54
- uri = URI('file://' + URI.encode(path))
54
+ uri = URI('file://' + ImageVise::FetcherFile.encode_file_uri_path(path))
55
55
  expect(ImageVise::FetcherFile).to receive(:maximum_source_file_size_bytes).and_return(1)
56
56
 
57
57
  expect {
@@ -33,7 +33,7 @@ describe ImageVise::RenderEngine do
33
33
 
34
34
  context 'when requesting an image' do
35
35
  before :each do
36
- parsed_url = Addressable::URI.parse(public_url)
36
+ parsed_url = URI.parse(public_url)
37
37
  ImageVise.add_allowed_host!(parsed_url.host)
38
38
  end
39
39
 
@@ -43,7 +43,7 @@ describe ImageVise::RenderEngine do
43
43
  end
44
44
 
45
45
  it 'halts with 400 when the requested image cannot be opened by ImageMagick' do
46
- uri = Addressable::URI.parse(public_url)
46
+ uri = URI.parse(public_url)
47
47
  ImageVise.add_allowed_host!(uri.host)
48
48
  ImageVise.add_secret_key!('l33tness')
49
49
  uri.path = '/___nonexistent_image.jpg'
@@ -76,7 +76,7 @@ describe ImageVise::RenderEngine do
76
76
  end
77
77
 
78
78
  it 'responds with 403 when upstream returns it, and includes the URL in the error message' do
79
- uri = Addressable::URI.parse(public_url)
79
+ uri = URI.parse(public_url)
80
80
  ImageVise.add_allowed_host!(uri.host)
81
81
  ImageVise.add_secret_key!('l33tness')
82
82
  uri.path = '/forbidden'
@@ -93,7 +93,7 @@ describe ImageVise::RenderEngine do
93
93
  end
94
94
 
95
95
  it 'replays upstream error response codes that are selected to be replayed to the requester' do
96
- uri = Addressable::URI.parse(public_url)
96
+ uri = URI.parse(public_url)
97
97
  ImageVise.add_allowed_host!(uri.host)
98
98
  ImageVise.add_secret_key!('l33tness')
99
99
 
@@ -118,7 +118,7 @@ describe ImageVise::RenderEngine do
118
118
  end
119
119
 
120
120
  it 'sets very far caching headers and an ETag, and returns a 304 if any ETag is set' do
121
- uri = Addressable::URI.parse(public_url)
121
+ uri = URI.parse(public_url)
122
122
  ImageVise.add_allowed_host!(uri.host)
123
123
  ImageVise.add_secret_key!('l33tness')
124
124
 
@@ -142,7 +142,7 @@ describe ImageVise::RenderEngine do
142
142
  end
143
143
 
144
144
  it 'allows for setting a custom cache lifetime' do
145
- uri = Addressable::URI.parse(public_url)
145
+ uri = URI.parse(public_url)
146
146
  ImageVise.add_allowed_host!(uri.host)
147
147
  ImageVise.add_secret_key!('l33tness')
148
148
 
@@ -158,7 +158,7 @@ describe ImageVise::RenderEngine do
158
158
  end
159
159
 
160
160
  it 'uses the correct default cache lifetime if one is not specified' do
161
- uri = Addressable::URI.parse(public_url)
161
+ uri = URI.parse(public_url)
162
162
  ImageVise.add_allowed_host!(uri.host)
163
163
  ImageVise.add_secret_key!('l33tness')
164
164
 
@@ -173,7 +173,7 @@ describe ImageVise::RenderEngine do
173
173
  end
174
174
 
175
175
  it 'responds with an image that passes through all the processing steps' do
176
- uri = Addressable::URI.parse(public_url)
176
+ uri = URI.parse(public_url)
177
177
  ImageVise.add_allowed_host!(uri.host)
178
178
  ImageVise.add_secret_key!('l33tness')
179
179
 
@@ -216,7 +216,7 @@ describe ImageVise::RenderEngine do
216
216
  end
217
217
 
218
218
  it 'calls all of the internal methods during execution' do
219
- uri = Addressable::URI.parse(public_url)
219
+ uri = URI.parse(public_url)
220
220
  ImageVise.add_allowed_host!(uri.host)
221
221
  ImageVise.add_secret_key!('l33tness')
222
222
 
@@ -249,7 +249,7 @@ describe ImageVise::RenderEngine do
249
249
  it 'URI-decodes the path in a file:// URL for a file with a Unicode path' do
250
250
  utf8_file_path = File.dirname(test_image_path) + '/картинка.jpg'
251
251
  FileUtils.cp_r(test_image_path, utf8_file_path)
252
- uri = 'file://' + URI.encode(utf8_file_path)
252
+ uri = 'file://' + ImageVise::FetcherFile.encode_file_uri_path(utf8_file_path)
253
253
 
254
254
  ImageVise.allow_filesystem_source!(File.dirname(test_image_path) + '/*.*')
255
255
  ImageVise.add_secret_key!('l33tness')
@@ -264,7 +264,7 @@ describe ImageVise::RenderEngine do
264
264
  end
265
265
 
266
266
  it 'forbids a request with an extra GET param' do
267
- uri = 'file://' + URI.encode(test_image_path)
267
+ uri = 'file://' + ImageVise::FetcherFile.encode_file_uri_path(test_image_path)
268
268
 
269
269
  p = ImageVise::Pipeline.new.fit_crop(width: 10, height: 10, gravity: 'c')
270
270
  image_request = ImageVise::ImageRequest.new(src_url: uri.to_s, pipeline: p)
@@ -275,7 +275,7 @@ describe ImageVise::RenderEngine do
275
275
  end
276
276
 
277
277
  it 'returns the processed JPEG image as a PNG if it had to get an alpha channel during processing' do
278
- uri = Addressable::URI.parse(public_url)
278
+ uri = URI.parse(public_url)
279
279
  ImageVise.add_allowed_host!(uri.host)
280
280
  ImageVise.add_secret_key!('l33tness')
281
281
 
@@ -292,7 +292,7 @@ describe ImageVise::RenderEngine do
292
292
  end
293
293
 
294
294
  it 'permits a PSD file by default' do
295
- uri = Addressable::URI.parse(public_url_psd)
295
+ uri = URI.parse(public_url_psd)
296
296
  ImageVise.add_allowed_host!(uri.host)
297
297
  ImageVise.add_secret_key!('l33tness')
298
298
 
@@ -304,7 +304,7 @@ describe ImageVise::RenderEngine do
304
304
  end
305
305
 
306
306
  it 'destroys all the loaded PSD layers' do
307
- uri = Addressable::URI.parse(public_url_psd_multilayer)
307
+ uri = URI.parse(public_url_psd_multilayer)
308
308
  ImageVise.add_allowed_host!(uri.host)
309
309
  ImageVise.add_secret_key!('l33tness')
310
310
 
@@ -324,7 +324,7 @@ describe ImageVise::RenderEngine do
324
324
  end
325
325
 
326
326
  it 'outputs a converted TIFF file as a PNG' do
327
- uri = Addressable::URI.parse(public_url_tif)
327
+ uri = URI.parse(public_url_tif)
328
328
  ImageVise.add_allowed_host!(uri.host)
329
329
  ImageVise.add_secret_key!('l33tness')
330
330
 
@@ -341,7 +341,7 @@ describe ImageVise::RenderEngine do
341
341
  end
342
342
 
343
343
  it 'processes a 1.5mb PSD with a forced conversion to JPEG' do
344
- uri = Addressable::URI.parse(public_url_psd)
344
+ uri = URI.parse(public_url_psd)
345
345
  ImageVise.add_allowed_host!(uri.host)
346
346
  ImageVise.add_secret_key!('1337ness')
347
347
 
@@ -357,7 +357,7 @@ describe ImageVise::RenderEngine do
357
357
  end
358
358
 
359
359
  it 'sets a customized Expires: cache lifetime set via the pipeline' do
360
- uri = Addressable::URI.parse(public_url_psd)
360
+ uri = URI.parse(public_url_psd)
361
361
  ImageVise.add_allowed_host!(uri.host)
362
362
  ImageVise.add_secret_key!('1337ness')
363
363
 
@@ -370,7 +370,7 @@ describe ImageVise::RenderEngine do
370
370
  end
371
371
 
372
372
  it 'converts a PNG into a JPG applying a background fill' do
373
- uri = Addressable::URI.parse(public_url_png_transparency)
373
+ uri = URI.parse(public_url_png_transparency)
374
374
  ImageVise.add_allowed_host!(uri.host)
375
375
  ImageVise.add_secret_key!('h00ray')
376
376
 
data/spec/spec_helper.rb CHANGED
@@ -8,7 +8,6 @@ Bundler.require
8
8
 
9
9
  require 'tmpdir'
10
10
  require 'securerandom'
11
- require 'addressable/uri'
12
11
  require 'strenv'
13
12
  require 'pry'
14
13
  require 'magic_bytes'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_vise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-30 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: patron
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3'
41
- - !ruby/object:Gem::Dependency
42
- name: ks
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rack
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,20 +100,6 @@ dependencies:
114
100
  - - "~>"
115
101
  - !ruby/object:Gem::Version
116
102
  version: '1'
117
- - !ruby/object:Gem::Dependency
118
- name: bundler
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
103
  - !ruby/object:Gem::Dependency
132
104
  name: rake
133
105
  requirement: !ruby/object:Gem::Requirement
@@ -171,7 +143,7 @@ dependencies:
171
143
  - !ruby/object:Gem::Version
172
144
  version: '3'
173
145
  - !ruby/object:Gem::Dependency
174
- name: addressable
146
+ name: strenv
175
147
  requirement: !ruby/object:Gem::Requirement
176
148
  requirements:
177
149
  - - ">="
@@ -185,7 +157,7 @@ dependencies:
185
157
  - !ruby/object:Gem::Version
186
158
  version: '0'
187
159
  - !ruby/object:Gem::Dependency
188
- name: strenv
160
+ name: simplecov
189
161
  requirement: !ruby/object:Gem::Requirement
190
162
  requirements:
191
163
  - - ">="
@@ -199,7 +171,7 @@ dependencies:
199
171
  - !ruby/object:Gem::Version
200
172
  version: '0'
201
173
  - !ruby/object:Gem::Dependency
202
- name: simplecov
174
+ name: pry
203
175
  requirement: !ruby/object:Gem::Requirement
204
176
  requirements:
205
177
  - - ">="
@@ -213,7 +185,7 @@ dependencies:
213
185
  - !ruby/object:Gem::Version
214
186
  version: '0'
215
187
  - !ruby/object:Gem::Dependency
216
- name: pry
188
+ name: webrick
217
189
  requirement: !ruby/object:Gem::Requirement
218
190
  requirements:
219
191
  - - ">="
@@ -303,7 +275,7 @@ licenses:
303
275
  - MIT
304
276
  metadata:
305
277
  allowed_push_host: https://rubygems.org
306
- post_install_message:
278
+ post_install_message:
307
279
  rdoc_options: []
308
280
  require_paths:
309
281
  - lib
@@ -311,15 +283,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
311
283
  requirements:
312
284
  - - ">="
313
285
  - !ruby/object:Gem::Version
314
- version: '0'
286
+ version: '2.5'
315
287
  required_rubygems_version: !ruby/object:Gem::Requirement
316
288
  requirements:
317
289
  - - ">="
318
290
  - !ruby/object:Gem::Version
319
291
  version: '0'
320
292
  requirements: []
321
- rubygems_version: 3.1.2
322
- signing_key:
293
+ rubygems_version: 3.2.22
294
+ signing_key:
323
295
  specification_version: 4
324
296
  summary: Runtime thumbnailing proxy
325
297
  test_files: []