image_resizer 0.3.0 → 0.4.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.
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'cocaine'
2
4
 
3
5
  group :development, :test do
4
6
  gem 'rspec'
data/Gemfile.lock CHANGED
@@ -1,10 +1,18 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
+ activesupport (3.2.12)
5
+ i18n (~> 0.6)
6
+ multi_json (~> 1.0)
4
7
  binding_of_caller (0.6.7)
8
+ climate_control (0.0.3)
9
+ activesupport (>= 3.0)
10
+ cocaine (0.5.1)
11
+ climate_control (>= 0.0.3, < 1.0)
5
12
  coderay (1.0.6)
6
13
  diff-lcs (1.1.3)
7
14
  git (1.2.5)
15
+ i18n (0.6.1)
8
16
  jeweler (1.8.3)
9
17
  bundler (~> 1.0)
10
18
  git (>= 1.2.5)
@@ -12,6 +20,7 @@ GEM
12
20
  rdoc
13
21
  json (1.6.6)
14
22
  method_source (0.7.1)
23
+ multi_json (1.6.1)
15
24
  pry (0.9.8.4)
16
25
  coderay (~> 1.0.5)
17
26
  method_source (~> 0.7.1)
@@ -38,6 +47,7 @@ PLATFORMS
38
47
  ruby
39
48
 
40
49
  DEPENDENCIES
50
+ cocaine
41
51
  jeweler
42
52
  pry
43
53
  pry-nav
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "image_resizer"
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Daniel Nelson"]
12
- s.date = "2012-04-30"
12
+ s.date = "2013-02-15"
13
13
  s.description = "Image resizing gem (requires ImageMagick)"
14
14
  s.email = "daniel@populr.me"
15
15
  s.extra_rdoc_files = [
@@ -33,7 +33,6 @@ Gem::Specification.new do |s|
33
33
  "lib/image_resizer/has_filename.rb",
34
34
  "lib/image_resizer/loggable.rb",
35
35
  "lib/image_resizer/processor.rb",
36
- "lib/image_resizer/shell.rb",
37
36
  "lib/image_resizer/temp_object.rb",
38
37
  "lib/image_resizer/utils.rb",
39
38
  "samples/DSC02119.JPG",
@@ -52,7 +51,6 @@ Gem::Specification.new do |s|
52
51
  "spec/image_resizer/has_filename_spec.rb",
53
52
  "spec/image_resizer/loggable_spec.rb",
54
53
  "spec/image_resizer/processor_spec.rb",
55
- "spec/image_resizer/shell_spec.rb",
56
54
  "spec/image_resizer/temp_object_spec.rb",
57
55
  "spec/spec_helper.rb",
58
56
  "spec/support/argument_matchers.rb",
@@ -70,12 +68,14 @@ Gem::Specification.new do |s|
70
68
  s.specification_version = 3
71
69
 
72
70
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
71
+ s.add_runtime_dependency(%q<cocaine>, [">= 0"])
73
72
  s.add_development_dependency(%q<rspec>, [">= 0"])
74
73
  s.add_development_dependency(%q<jeweler>, [">= 0"])
75
74
  s.add_development_dependency(%q<pry>, [">= 0"])
76
75
  s.add_development_dependency(%q<pry-nav>, [">= 0"])
77
76
  s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
78
77
  else
78
+ s.add_dependency(%q<cocaine>, [">= 0"])
79
79
  s.add_dependency(%q<rspec>, [">= 0"])
80
80
  s.add_dependency(%q<jeweler>, [">= 0"])
81
81
  s.add_dependency(%q<pry>, [">= 0"])
@@ -83,6 +83,7 @@ Gem::Specification.new do |s|
83
83
  s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
84
84
  end
85
85
  else
86
+ s.add_dependency(%q<cocaine>, [">= 0"])
86
87
  s.add_dependency(%q<rspec>, [">= 0"])
87
88
  s.add_dependency(%q<jeweler>, [">= 0"])
88
89
  s.add_dependency(%q<pry>, [">= 0"])
@@ -46,7 +46,7 @@ module ImageResizer
46
46
  end
47
47
 
48
48
  def _resize(temp_object, geometry, format=nil)
49
- convert(temp_object, "-resize #{geometry}", format)
49
+ convert(temp_object, "-resize '#{geometry}'", format)
50
50
  end
51
51
 
52
52
  def auto_orient(temp_object)
@@ -192,7 +192,7 @@ module ImageResizer
192
192
  end
193
193
 
194
194
  def rotate(temp_object, amount, opts={})
195
- convert(temp_object, "-rotate #{amount}#{opts[:qualifier]}")
195
+ convert(temp_object, "-rotate '#{amount}#{opts[:qualifier]}'")
196
196
  end
197
197
 
198
198
  def strip(temp_object)
@@ -1,9 +1,9 @@
1
1
  require 'tempfile'
2
+ require 'cocaine'
2
3
 
3
4
  module ImageResizer
4
5
  module Utils
5
6
 
6
- include Shell
7
7
  include Loggable
8
8
  include Configurable
9
9
  configurable_attr :convert_command, "convert"
@@ -13,13 +13,24 @@ module ImageResizer
13
13
 
14
14
  def convert(temp_object=nil, args='', format=nil)
15
15
  tempfile = new_tempfile(format)
16
+ interpolation_data = {}
17
+
16
18
  if temp_object.is_a?(Array)
17
- paths = temp_object.map { |obj| quote(obj.path) }.join(' ')
18
- run convert_command, %(#{paths} #{args} #{quote(tempfile.path)})
19
+ temp_object.length.times { |index| interpolation_data["input#{index}".to_sym] = temp_object[index].path }
20
+ keys = interpolation_data.keys.map { |s| ":#{s}" }
21
+ args = "#{keys.join(' ')} #{args} :output"
22
+ elsif temp_object
23
+ interpolation_data[:input] = temp_object.path
24
+ args = ":input #{args} :output"
19
25
  else
20
- run convert_command, %(#{quote(temp_object.path) if temp_object} #{args} #{quote(tempfile.path)})
26
+ args = "#{args} :output"
21
27
  end
22
28
 
29
+ interpolation_data[:output] = tempfile.path
30
+
31
+ line = Cocaine::CommandLine.new(convert_command, args)
32
+ line.run(interpolation_data)
33
+
23
34
  tempfile
24
35
  end
25
36
 
@@ -36,7 +47,8 @@ module ImageResizer
36
47
  end
37
48
 
38
49
  def raw_identify(temp_object, args='')
39
- run identify_command, "#{args} #{quote(temp_object.path)}"
50
+ line = Cocaine::CommandLine.new(identify_command, "#{args} :input")
51
+ line.run(:input => temp_object.path)
40
52
  end
41
53
 
42
54
  def new_tempfile(ext=nil)
data/lib/image_resizer.rb CHANGED
@@ -2,7 +2,6 @@
2
2
  require 'image_resizer/has_filename'
3
3
  require 'image_resizer/loggable'
4
4
  require 'image_resizer/configurable'
5
- require 'image_resizer/shell'
6
5
  require 'image_resizer/utils'
7
6
  require 'image_resizer/analyzer'
8
7
  require 'image_resizer/encoder'
@@ -659,7 +659,9 @@ describe ImageResizer::Processor do
659
659
  tempfile.stub(:path).and_return('output path')
660
660
 
661
661
  @processor.stub(:new_tempfile).and_return(tempfile)
662
- @processor.should_receive(:run).with('convert', "'hello world' 'goodbye' 'output path'")
662
+ line = double(:line)
663
+ Cocaine::CommandLine.should_receive(:new).with('convert', ":input0 :input1 :output").and_return(line)
664
+ line.should_receive(:run).with(:input0 => 'hello world', :input1 => 'goodbye', :output => 'output path')
663
665
  image = @processor.convert([image1, image2])
664
666
  end
665
667
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_resizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-30 00:00:00.000000000 Z
12
+ date: 2013-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: cocaine
16
+ requirement: &2153569580 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2153569580
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: rspec
16
- requirement: &2157276080 !ruby/object:Gem::Requirement
27
+ requirement: &2153568720 !ruby/object:Gem::Requirement
17
28
  none: false
18
29
  requirements:
19
30
  - - ! '>='
@@ -21,10 +32,10 @@ dependencies:
21
32
  version: '0'
22
33
  type: :development
23
34
  prerelease: false
24
- version_requirements: *2157276080
35
+ version_requirements: *2153568720
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: jeweler
27
- requirement: &2157274360 !ruby/object:Gem::Requirement
38
+ requirement: &2153567680 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *2157274360
46
+ version_requirements: *2153567680
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: pry
38
- requirement: &2157300300 !ruby/object:Gem::Requirement
49
+ requirement: &2153566740 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *2157300300
57
+ version_requirements: *2153566740
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: pry-nav
49
- requirement: &2157299680 !ruby/object:Gem::Requirement
60
+ requirement: &2153565860 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *2157299680
68
+ version_requirements: *2153565860
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: pry-stack_explorer
60
- requirement: &2157298920 !ruby/object:Gem::Requirement
71
+ requirement: &2153563600 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *2157298920
79
+ version_requirements: *2153563600
69
80
  description: Image resizing gem (requires ImageMagick)
70
81
  email: daniel@populr.me
71
82
  executables: []
@@ -90,7 +101,6 @@ files:
90
101
  - lib/image_resizer/has_filename.rb
91
102
  - lib/image_resizer/loggable.rb
92
103
  - lib/image_resizer/processor.rb
93
- - lib/image_resizer/shell.rb
94
104
  - lib/image_resizer/temp_object.rb
95
105
  - lib/image_resizer/utils.rb
96
106
  - samples/DSC02119.JPG
@@ -109,7 +119,6 @@ files:
109
119
  - spec/image_resizer/has_filename_spec.rb
110
120
  - spec/image_resizer/loggable_spec.rb
111
121
  - spec/image_resizer/processor_spec.rb
112
- - spec/image_resizer/shell_spec.rb
113
122
  - spec/image_resizer/temp_object_spec.rb
114
123
  - spec/spec_helper.rb
115
124
  - spec/support/argument_matchers.rb
@@ -131,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
140
  version: '0'
132
141
  segments:
133
142
  - 0
134
- hash: -3748383720531710291
143
+ hash: -2071369988750528339
135
144
  required_rubygems_version: !ruby/object:Gem::Requirement
136
145
  none: false
137
146
  requirements:
@@ -1,48 +0,0 @@
1
- require 'shellwords'
2
-
3
- module ImageResizer
4
- module Shell
5
-
6
- include Configurable
7
- configurable_attr :log_commands, false
8
-
9
- # Exceptions
10
- class CommandFailed < RuntimeError; end
11
-
12
- def run(command, args="")
13
- full_command = "#{command} #{escape_args(args)}"
14
- log.debug("Running command: #{full_command}") if log_commands
15
- begin
16
- result = `#{full_command}`
17
- rescue Errno::ENOENT
18
- raise_shell_command_failed(full_command)
19
- end
20
- if $?.exitstatus == 1
21
- throw :unable_to_handle
22
- elsif !$?.success?
23
- raise_shell_command_failed(full_command)
24
- end
25
- result
26
- end
27
-
28
- def raise_shell_command_failed(command)
29
- raise CommandFailed, "Command failed (#{command}) with exit status #{$?.exitstatus}"
30
- end
31
-
32
- def escape_args(args)
33
- args.shellsplit.map do |arg|
34
- quote arg.gsub(/\\?'/, %q('\\\\''))
35
- end.join(' ')
36
- end
37
-
38
- def quote(string)
39
- q = running_on_windows? ? '"' : "'"
40
- q + string + q
41
- end
42
-
43
- def running_on_windows?
44
- ENV['OS'] && ENV['OS'].downcase == 'windows_nt'
45
- end
46
-
47
- end
48
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ImageResizer::Shell do
4
-
5
- include ImageResizer::Shell
6
-
7
- it "should raise an error if the identify command isn't found" do
8
- suppressing_stderr do
9
- lambda{
10
- run "non-existent-command"
11
- }.should raise_error(ImageResizer::Shell::CommandFailed)
12
- end
13
- end
14
-
15
- describe "escaping args" do
16
- {
17
- %q(hello) => %q('hello'),
18
- %q("hello") => %q('hello'),
19
- %q('hello') => %q('hello'),
20
- %q(he\'llo) => %q('he'\''llo'),
21
- %q('he'\''llo') => %q('he'\''llo'),
22
- %q("he'llo") => %q('he'\''llo'),
23
- %q(hel$(lo)) => %q('hel$(lo)'),
24
- %q(hel\$(lo)) => %q('hel$(lo)'),
25
- %q('hel\$(lo)') => %q('hel\$(lo)')
26
- }.each do |args, escaped_args|
27
- it "should escape #{args.inspect} -> #{escaped_args.inspect}" do
28
- pending "not applicable to windows" if running_on_windows?
29
- escape_args(args).should == escaped_args
30
- end
31
- end
32
- end
33
-
34
- end