image_resizer 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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