image_optim 0.24.0 → 0.24.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.rubocop.yml +9 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.markdown +7 -1
- data/Gemfile +4 -1
- data/image_optim.gemspec +2 -2
- data/lib/image_optim/bin_resolver/bin.rb +3 -1
- data/lib/image_optim/worker/class_methods.rb +4 -3
- data/script/worker_analysis +10 -21
- data/spec/image_optim/bin_resolver_spec.rb +3 -3
- data/spec/image_optim/worker_spec.rb +13 -18
- data/spec/spec_helper.rb +12 -14
- metadata +47 -38
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YmZlNWUxYzFmZmU4NDFmZjgxZDYwOTNlNzBlZTA0NTc0YzQ4NzJkNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bb7d895e52e7a9630b4c7d6970b8619a6d121fa1
|
4
|
+
data.tar.gz: 5a806c1499ef299274fcc427c2718262a4e94ee3
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YjJiZTdkZjgxYmQ3Y2U2MmNhMmRhYzE0YjkxZmJlY2EwMTg1MDNiMjUyMGNk
|
11
|
-
NjFhYWM3ZGVlOWY4MTRjYjg4ZDUwZmUyMzI1OTBhYTM4ZDI4ZGY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjQ0MjZkN2RhYjYyMWU2ZWJhYTVhMDkyMjI3YWY0NTM1ZTgxN2U5YjY2NTM3
|
14
|
-
YmQ3OWNkNzNjZmI4NjFjM2I0YTYxZWE1ODQ5ZjU0ODYyNTVkOGZjMmE1MDE4
|
15
|
-
YjIyODM5OTI3YzQ5N2Y4MmYxMDFkYTc0OGQ2MmNkMjQ4MGZmMGQ=
|
6
|
+
metadata.gz: 9c3745cbf55f2b9bcd4a3f9cf64c680790a13cfc3da4fadad950f5f7a997199768442b6fc8d781cbc7d5ed22ddcdc314717b78104168564d4bc13b006b170d4d
|
7
|
+
data.tar.gz: 4e4873812c576ee9428a8dfa20b69b4977f349ee9692fd36740b2266934b310ef96abec8d7f78531d2dddeef243d308e8ee444ca56c236f372e58bf594fca519
|
data/.rubocop.yml
CHANGED
@@ -6,9 +6,18 @@ AllCops:
|
|
6
6
|
Lint/EndAlignment:
|
7
7
|
AlignWith: variable
|
8
8
|
|
9
|
+
Lint/UnneededSplatExpansion:
|
10
|
+
Enabled: false
|
11
|
+
|
9
12
|
Metrics/AbcSize:
|
10
13
|
Max: 30
|
11
14
|
|
15
|
+
Metrics/BlockLength:
|
16
|
+
Exclude:
|
17
|
+
- 'lib/image_optim/runner/option_parser.rb'
|
18
|
+
- 'script/worker_analysis'
|
19
|
+
- 'spec/**/*.rb'
|
20
|
+
|
12
21
|
Metrics/ClassLength:
|
13
22
|
Max: 150
|
14
23
|
|
data/.travis.yml
CHANGED
data/CHANGELOG.markdown
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
## unreleased
|
4
4
|
|
5
|
+
## v0.24.1 (2016-11-20)
|
6
|
+
|
7
|
+
* Use `image_size ~> 1.5` with `apng` detection, so apng images are not optimised to one frame version [#142](https://github.com/toy/image_optim/issues/142) [@toy](https://github.com/toy)
|
8
|
+
* Don't show `?` for unknown bin version in message about inability to determine version [@toy](https://github.com/toy)
|
9
|
+
* Deduplicate bin resolving error messages [@toy](https://github.com/toy)
|
10
|
+
|
5
11
|
## v0.24.0 (2016-08-14)
|
6
12
|
|
7
13
|
* Rails image assets optimization is extracted into [image\_optim\_rails gem](https://github.com/toy/image_optim_rails) [#127](https://github.com/toy/image_optim/issues/127) [@toy](https://github.com/toy)
|
@@ -237,7 +243,7 @@
|
|
237
243
|
|
238
244
|
## v0.7.1 (2013-01-17)
|
239
245
|
|
240
|
-
* Use more compatible redirect syntax `>&` [#9](https://github.com/toy/image_optim/issues/9) @
|
246
|
+
* Use more compatible redirect syntax `>&` [#9](https://github.com/toy/image_optim/issues/9) [@teaforthecat](https://github.com/teaforthecat)
|
241
247
|
|
242
248
|
## v0.7.0 (2013-01-17)
|
243
249
|
|
data/Gemfile
CHANGED
data/image_optim.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'image_optim'
|
5
|
-
s.version = '0.24.
|
5
|
+
s.version = '0.24.1'
|
6
6
|
s.summary = %q{Optimize (lossless compress, optionally lossy) images (jpeg, png, gif, svg) using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)}
|
7
7
|
s.homepage = "http://github.com/toy/#{s.name}"
|
8
8
|
s.authors = ['Ivan Kuchin']
|
@@ -21,7 +21,7 @@ You can safely remove `config.assets.image_optim = false` if you are not going t
|
|
21
21
|
EOF
|
22
22
|
|
23
23
|
s.add_dependency 'fspath', '~> 3.0'
|
24
|
-
s.add_dependency 'image_size', '~> 1.
|
24
|
+
s.add_dependency 'image_size', '~> 1.5'
|
25
25
|
s.add_dependency 'exifr', '~> 1.2', '>= 1.2.2'
|
26
26
|
s.add_dependency 'progress', '~> 3.0', '>= 3.0.1'
|
27
27
|
s.add_dependency 'in_threads', '~> 1.3'
|
@@ -48,7 +48,9 @@ class ImageOptim
|
|
48
48
|
|
49
49
|
# Fail if version will not work properly
|
50
50
|
def check_fail!
|
51
|
-
|
51
|
+
unless version
|
52
|
+
fail UnknownVersion, "could not get version of #{name} at #{path}"
|
53
|
+
end
|
52
54
|
|
53
55
|
FAIL_CHECKS.each do |bin_name, matcher, message|
|
54
56
|
next unless bin_name == name
|
@@ -65,11 +65,12 @@ class ImageOptim
|
|
65
65
|
end
|
66
66
|
|
67
67
|
unless errors.empty?
|
68
|
+
messages = errors.map(&:to_s).uniq
|
68
69
|
if image_optim.skip_missing_workers
|
69
|
-
|
70
|
+
messages.each{ |message| warn message }
|
70
71
|
else
|
71
|
-
|
72
|
-
fail BinResolver::Error,
|
72
|
+
joint_message = ['Bin resolving errors:', *messages].join("\n")
|
73
|
+
fail BinResolver::Error, joint_message
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
data/script/worker_analysis
CHANGED
@@ -81,10 +81,6 @@ Process.times.class.class_eval do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
ImageOptim::Path.class_eval do
|
84
|
-
def shellescape
|
85
|
-
to_s.shellescape
|
86
|
-
end
|
87
|
-
|
88
84
|
def digest
|
89
85
|
@digest ||= Digest::SHA256.file(to_s).hexdigest
|
90
86
|
end
|
@@ -313,13 +309,13 @@ class Analyser
|
|
313
309
|
images = [flatten_animation(@path), flatten_animation(other)]
|
314
310
|
|
315
311
|
alpha_presence = images.map do |image|
|
316
|
-
Cmd.capture("identify -format '%A' #{image.shellescape}")
|
312
|
+
Cmd.capture("identify -format '%A' #{image.to_s.shellescape}")
|
317
313
|
end
|
318
314
|
if alpha_presence.uniq.length == 2
|
319
315
|
images.map!{ |image| underlay_noise(image) }
|
320
316
|
end
|
321
317
|
|
322
|
-
|
318
|
+
nrmse = Cmd.capture(%W[
|
323
319
|
convert
|
324
320
|
#{images[0]} -auto-orient
|
325
321
|
#{images[1]} -auto-orient
|
@@ -327,8 +323,7 @@ class Analyser
|
|
327
323
|
-compare
|
328
324
|
-format %[distortion]
|
329
325
|
info:
|
330
|
-
].shelljoin
|
331
|
-
nrmse = Cmd.capture(nrmse_command).to_f
|
326
|
+
].shelljoin).to_f
|
332
327
|
unless $CHILD_STATUS.success?
|
333
328
|
fail "failed comparison of #{@path} with #{other}"
|
334
329
|
end
|
@@ -342,14 +337,11 @@ class Analyser
|
|
342
337
|
flattened = image.temp_path
|
343
338
|
Cmd.run(*%W[
|
344
339
|
convert
|
345
|
-
#{image
|
340
|
+
#{image}
|
346
341
|
-coalesce
|
347
342
|
-append
|
348
|
-
#{flattened
|
349
|
-
])
|
350
|
-
unless $CHILD_STATUS.success?
|
351
|
-
fail "failed flattening of #{image}"
|
352
|
-
end
|
343
|
+
#{flattened}
|
344
|
+
]) || fail("failed flattening of #{image}")
|
353
345
|
flattened
|
354
346
|
else
|
355
347
|
image
|
@@ -362,16 +354,13 @@ class Analyser
|
|
362
354
|
with_noise = image.temp_path
|
363
355
|
Cmd.run(*%W[
|
364
356
|
convert
|
365
|
-
#{image
|
357
|
+
#{image}
|
366
358
|
+noise Random
|
367
|
-
#{image
|
359
|
+
#{image}
|
368
360
|
-flatten
|
369
361
|
-alpha off
|
370
|
-
#{with_noise
|
371
|
-
])
|
372
|
-
unless $CHILD_STATUS.success?
|
373
|
-
fail "failed underlaying noise to #{image}"
|
374
|
-
end
|
362
|
+
#{with_noise}
|
363
|
+
]) || fail("failed underlaying noise to #{image}")
|
375
364
|
with_noise
|
376
365
|
end
|
377
366
|
end
|
@@ -255,7 +255,7 @@ describe ImageOptim::BinResolver do
|
|
255
255
|
5.times do
|
256
256
|
expect do
|
257
257
|
resolver.resolve!(:pngcrush)
|
258
|
-
end.to raise_error Bin::UnknownVersion
|
258
|
+
end.to raise_error Bin::UnknownVersion, %r{pngcrush at /bin/pngcrush}
|
259
259
|
end
|
260
260
|
end
|
261
261
|
|
@@ -269,7 +269,7 @@ describe ImageOptim::BinResolver do
|
|
269
269
|
5.times do
|
270
270
|
expect do
|
271
271
|
resolver.resolve!(:pngcrush)
|
272
|
-
end.to raise_error Bin::BadVersion
|
272
|
+
end.to raise_error Bin::BadVersion, /is known to produce broken pngs/
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
@@ -280,7 +280,7 @@ describe ImageOptim::BinResolver do
|
|
280
280
|
expect(Bin).to receive(:new).and_return(bin)
|
281
281
|
allow(bin).to receive(:version).and_return(SimpleVersion.new('1.15'))
|
282
282
|
|
283
|
-
expect(bin).to receive(:warn).once
|
283
|
+
expect(bin).to receive(:warn).once.with(match(/does not use zopfli/))
|
284
284
|
|
285
285
|
5.times do
|
286
286
|
resolver.resolve!(:pngcrush)
|
@@ -160,11 +160,11 @@ describe ImageOptim::Worker do
|
|
160
160
|
|
161
161
|
describe 'with missing workers' do
|
162
162
|
let(:workers) do
|
163
|
-
|
163
|
+
%w[a b c c].map do |bin|
|
164
164
|
worker = worker_double
|
165
|
-
unless
|
165
|
+
unless bin == 'b'
|
166
166
|
allow(worker).to receive(:resolve_used_bins!).
|
167
|
-
and_raise(BinResolver::BinNotFound, "not found #{
|
167
|
+
and_raise(BinResolver::BinNotFound, "not found #{bin}")
|
168
168
|
end
|
169
169
|
worker
|
170
170
|
end
|
@@ -176,32 +176,27 @@ describe ImageOptim::Worker do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
describe 'if skip_missing_workers is true' do
|
179
|
-
|
180
|
-
match do |error|
|
181
|
-
error.is_a?(BinResolver::BinNotFound) && error.message == message
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
it 'shows warnings and returns resolved workers ' do
|
179
|
+
it 'shows deduplicated warnings and returns resolved workers ' do
|
186
180
|
allow(image_optim).to receive(:skip_missing_workers).and_return(true)
|
187
181
|
|
188
|
-
expect(Worker).to receive(:warn).
|
189
|
-
|
190
|
-
expect(Worker).to receive(:warn).
|
191
|
-
once.with(bin_not_found('not found 2'))
|
182
|
+
expect(Worker).to receive(:warn).once.with('not found a')
|
183
|
+
expect(Worker).to receive(:warn).once.with('not found c')
|
192
184
|
|
193
|
-
expect(Worker.create_all(image_optim){ {} }).
|
194
|
-
to eq([workers[1]])
|
185
|
+
expect(Worker.create_all(image_optim){ {} }).to eq([workers[1]])
|
195
186
|
end
|
196
187
|
end
|
197
188
|
|
198
189
|
describe 'if skip_missing_workers is false' do
|
199
|
-
it 'fails with a joint exception' do
|
190
|
+
it 'fails with a joint exception of deduplicated messages' do
|
200
191
|
allow(image_optim).to receive(:skip_missing_workers).and_return(false)
|
201
192
|
|
202
193
|
expect do
|
203
194
|
Worker.create_all(image_optim){ {} }
|
204
|
-
end.to raise_error(BinResolver::Error,
|
195
|
+
end.to raise_error(BinResolver::Error, [
|
196
|
+
'Bin resolving errors:',
|
197
|
+
'not found a',
|
198
|
+
'not found c',
|
199
|
+
].join("\n"))
|
205
200
|
end
|
206
201
|
end
|
207
202
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
if ENV['CODECLIMATE']
|
2
|
-
require '
|
3
|
-
|
1
|
+
if ENV['CODECLIMATE']
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
4
|
end
|
5
5
|
|
6
6
|
require 'image_optim/pack'
|
@@ -26,11 +26,11 @@ def flatten_animation(image)
|
|
26
26
|
flattened = image.temp_path
|
27
27
|
command = %W[
|
28
28
|
convert
|
29
|
-
#{image
|
29
|
+
#{image}
|
30
30
|
-coalesce
|
31
31
|
-append
|
32
|
-
#{flattened
|
33
|
-
].
|
32
|
+
#{flattened}
|
33
|
+
].shelljoin
|
34
34
|
expect(ImageOptim::Cmd.run(command)).to be_truthy
|
35
35
|
flattened
|
36
36
|
else
|
@@ -41,7 +41,7 @@ end
|
|
41
41
|
def mepp(image_a, image_b)
|
42
42
|
coalesce_a = flatten_animation(image_a)
|
43
43
|
coalesce_b = flatten_animation(image_b)
|
44
|
-
|
44
|
+
output = ImageOptim::Cmd.capture(%W[
|
45
45
|
compare
|
46
46
|
-metric MEPP
|
47
47
|
-alpha Background
|
@@ -49,14 +49,12 @@ def mepp(image_a, image_b)
|
|
49
49
|
#{coalesce_b.to_s.shellescape}
|
50
50
|
#{ImageOptim::Path::NULL}
|
51
51
|
2>&1
|
52
|
-
].join(' ')
|
53
|
-
|
54
|
-
if [0, 1].include?($CHILD_STATUS.exitstatus)
|
55
|
-
num_r = '\d+(?:\.\d+(?:[eE][-+]?\d+)?)?'
|
56
|
-
output[/\((#{num_r}), #{num_r}\)/, 1].to_f
|
57
|
-
else
|
52
|
+
].join(' '))
|
53
|
+
unless [0, 1].include?($CHILD_STATUS.exitstatus)
|
58
54
|
fail "compare #{image_a} with #{image_b} failed with `#{output}`"
|
59
55
|
end
|
56
|
+
num_r = '\d+(?:\.\d+(?:[eE][-+]?\d+)?)?'
|
57
|
+
output[/\((#{num_r}), #{num_r}\)/, 1].to_f
|
60
58
|
end
|
61
59
|
|
62
60
|
RSpec::Matchers.define :be_smaller_than do |expected|
|
@@ -78,7 +76,7 @@ module CapabilityCheckHelpers
|
|
78
76
|
def any_file_modes_allowed?
|
79
77
|
Tempfile.open 'posix' do |f|
|
80
78
|
File.chmod(0, f.path)
|
81
|
-
(File.stat(f.path).mode & 0o777).zero?
|
79
|
+
return (File.stat(f.path).mode & 0o777).zero?
|
82
80
|
end
|
83
81
|
end
|
84
82
|
|
metadata
CHANGED
@@ -1,131 +1,145 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image_optim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.24.
|
4
|
+
version: 0.24.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Kuchin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fspath
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
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
26
|
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: image_size
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.5'
|
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: '1.
|
40
|
+
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: exifr
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.2'
|
48
|
-
- -
|
48
|
+
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: 1.2.2
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- - ~>
|
55
|
+
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '1.2'
|
58
|
-
- -
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 1.2.2
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: progress
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - ~>
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '3.0'
|
68
|
-
- -
|
68
|
+
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 3.0.1
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - ~>
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '3.0'
|
78
|
-
- -
|
78
|
+
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: 3.0.1
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: in_threads
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- - ~>
|
85
|
+
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '1.3'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
|
-
- - ~>
|
92
|
+
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '1.3'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: image_optim_pack
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- - ~>
|
99
|
+
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0.2'
|
102
|
-
- -
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: 0.2.2
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - ~>
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0.2'
|
112
|
-
- -
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: 0.2.2
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: rspec
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - ~>
|
119
|
+
- - "~>"
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '3.0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- - ~>
|
126
|
+
- - "~>"
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '3.0'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: rubocop
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0.37'
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0.37'
|
129
143
|
description:
|
130
144
|
email:
|
131
145
|
executables:
|
@@ -133,10 +147,10 @@ executables:
|
|
133
147
|
extensions: []
|
134
148
|
extra_rdoc_files: []
|
135
149
|
files:
|
136
|
-
- .appveyor.yml
|
137
|
-
- .gitignore
|
138
|
-
- .rubocop.yml
|
139
|
-
- .travis.yml
|
150
|
+
- ".appveyor.yml"
|
151
|
+
- ".gitignore"
|
152
|
+
- ".rubocop.yml"
|
153
|
+
- ".travis.yml"
|
140
154
|
- CHANGELOG.markdown
|
141
155
|
- CONTRIBUTING.markdown
|
142
156
|
- Gemfile
|
@@ -240,24 +254,20 @@ homepage: http://github.com/toy/image_optim
|
|
240
254
|
licenses:
|
241
255
|
- MIT
|
242
256
|
metadata: {}
|
243
|
-
post_install_message:
|
244
|
-
gem
|
245
|
-
|
246
|
-
You can safely remove `config.assets.image_optim = false` if you are not going to
|
247
|
-
use that gem
|
248
|
-
|
249
|
-
'
|
257
|
+
post_install_message: |
|
258
|
+
Rails image assets optimization is extracted into image_optim_rails gem
|
259
|
+
You can safely remove `config.assets.image_optim = false` if you are not going to use that gem
|
250
260
|
rdoc_options: []
|
251
261
|
require_paths:
|
252
262
|
- lib
|
253
263
|
required_ruby_version: !ruby/object:Gem::Requirement
|
254
264
|
requirements:
|
255
|
-
- -
|
265
|
+
- - ">="
|
256
266
|
- !ruby/object:Gem::Version
|
257
267
|
version: '0'
|
258
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
269
|
requirements:
|
260
|
-
- -
|
270
|
+
- - ">="
|
261
271
|
- !ruby/object:Gem::Version
|
262
272
|
version: '0'
|
263
273
|
requirements: []
|
@@ -317,4 +327,3 @@ test_files:
|
|
317
327
|
- spec/images/transparency2.png
|
318
328
|
- spec/images/vergroessert.jpg
|
319
329
|
- spec/spec_helper.rb
|
320
|
-
has_rdoc:
|