magickly 2.0.1 → 2.0.2

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
  SHA1:
3
- metadata.gz: 48bca736420533c04731a949b5034b8deb9b1f12
4
- data.tar.gz: 8a5e765053acac5f2ff53344e21efb0c9e5d3410
3
+ metadata.gz: 868fc5c7b36e6d2d18b1119d57ecc20f775c8530
4
+ data.tar.gz: 018b0809e1b4572af9b0d82b4afc46be95d52263
5
5
  SHA512:
6
- metadata.gz: 265eabe3f052b86708a3c0b6157b5f6f5994c57f5095f7c192d23be58be7ca52a6ce593dd09937d5ef2110bb11216810199feac3bd8ecea50cbc50afab12fca2
7
- data.tar.gz: 3efc895a81cc9ccb0573ec5d7096cd832f1059834ded8116f379ce13e77cd56473cbce4755f54a14276f41962ab9ee524b895742e28667d16783f56ff377b969
6
+ metadata.gz: 191dc04dc5709ed6daace9bded938054021e48979d028321904a42f98d2e83dc11e33681d445f4c8ea0405cc1e3868da0951b41479bbe13f78e93a07aedad187
7
+ data.tar.gz: 2f19233c16fb77f8c866c8cbe5e19cf81ade4b6882aadb8a35404618d81b23ca3c758eade3924cc1f835a77a18ebbc67c6d7bb17b3a3c04d1e6247b091052d02
@@ -3,6 +3,6 @@ Add tests for any new feature, and ensure that they pass.
3
3
  ## To run specs
4
4
 
5
5
  ```bash
6
- bundle install
7
- rspec spec
6
+ bundle
7
+ bundle exec rake
8
8
  ```
data/Gemfile CHANGED
@@ -1,9 +1,10 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.1.0' unless ENV['CI']
4
-
5
3
  gemspec
6
4
 
5
+ gem 'dotenv'
6
+
7
+ gem 'rake'
7
8
  gem 'rack-cache', :require => 'rack/cache'
8
9
 
9
10
  group :development, :test do
@@ -13,6 +14,6 @@ group :development, :test do
13
14
  gem 'fastimage'
14
15
  end
15
16
 
16
- group :production do
17
+ group :production, :staging do
17
18
  gem 'newrelic_rpm', :require => false
18
19
  end
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- magickly (1.4.0)
5
- activesupport (>= 2.0.0)
4
+ magickly (2.0.2)
5
+ activesupport (>= 2.0.0, < 5)
6
6
  addressable (~> 2.2)
7
7
  dragonfly (~> 0.9.14)
8
8
  httparty (~> 0.13)
@@ -11,67 +11,74 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (4.0.3)
15
- i18n (~> 0.6, >= 0.6.4)
16
- minitest (~> 4.2)
17
- multi_json (~> 1.3)
14
+ activesupport (4.1.8)
15
+ i18n (~> 0.6, >= 0.6.9)
16
+ json (~> 1.7, >= 1.7.7)
17
+ minitest (~> 5.1)
18
18
  thread_safe (~> 0.1)
19
- tzinfo (~> 0.3.37)
20
- addressable (2.3.5)
21
- atomic (1.1.14)
19
+ tzinfo (~> 1.1)
20
+ addressable (2.3.6)
22
21
  crack (0.4.2)
23
22
  safe_yaml (~> 1.0.0)
24
23
  diff-lcs (1.2.5)
24
+ dotenv (1.0.2)
25
25
  dragonfly (0.9.15)
26
26
  multi_json (~> 1.0)
27
27
  rack
28
- fastimage (1.6.0)
28
+ fastimage (1.6.6)
29
29
  addressable (~> 2.3, >= 2.3.5)
30
- httparty (0.13.0)
30
+ httparty (0.13.3)
31
31
  json (~> 1.8)
32
32
  multi_xml (>= 0.5.2)
33
- i18n (0.6.9)
33
+ i18n (0.6.11)
34
34
  json (1.8.1)
35
- minitest (4.7.5)
36
- multi_json (1.8.4)
35
+ minitest (5.4.3)
36
+ multi_json (1.10.1)
37
37
  multi_xml (0.5.5)
38
- newrelic_rpm (3.7.2.195)
38
+ newrelic_rpm (3.9.8.273)
39
39
  rack (1.5.2)
40
40
  rack-cache (1.2)
41
41
  rack (>= 0.4)
42
- rack-protection (1.5.2)
42
+ rack-protection (1.5.3)
43
43
  rack
44
44
  rack-test (0.6.2)
45
45
  rack (>= 1.0)
46
- rspec (2.14.1)
47
- rspec-core (~> 2.14.0)
48
- rspec-expectations (~> 2.14.0)
49
- rspec-mocks (~> 2.14.0)
50
- rspec-core (2.14.7)
51
- rspec-expectations (2.14.5)
52
- diff-lcs (>= 1.1.3, < 2.0)
53
- rspec-mocks (2.14.5)
54
- safe_yaml (1.0.1)
55
- sinatra (1.4.4)
46
+ rake (10.4.2)
47
+ rspec (3.1.0)
48
+ rspec-core (~> 3.1.0)
49
+ rspec-expectations (~> 3.1.0)
50
+ rspec-mocks (~> 3.1.0)
51
+ rspec-core (3.1.7)
52
+ rspec-support (~> 3.1.0)
53
+ rspec-expectations (3.1.2)
54
+ diff-lcs (>= 1.2.0, < 2.0)
55
+ rspec-support (~> 3.1.0)
56
+ rspec-mocks (3.1.3)
57
+ rspec-support (~> 3.1.0)
58
+ rspec-support (3.1.2)
59
+ safe_yaml (1.0.4)
60
+ sinatra (1.4.5)
56
61
  rack (~> 1.4)
57
62
  rack-protection (~> 1.4)
58
63
  tilt (~> 1.3, >= 1.3.4)
59
- thread_safe (0.1.3)
60
- atomic
64
+ thread_safe (0.3.4)
61
65
  tilt (1.4.1)
62
- tzinfo (0.3.38)
63
- webmock (1.17.3)
64
- addressable (>= 2.2.7)
66
+ tzinfo (1.2.2)
67
+ thread_safe (~> 0.1)
68
+ webmock (1.20.4)
69
+ addressable (>= 2.3.6)
65
70
  crack (>= 0.3.2)
66
71
 
67
72
  PLATFORMS
68
73
  ruby
69
74
 
70
75
  DEPENDENCIES
76
+ dotenv
71
77
  fastimage
72
78
  magickly!
73
79
  newrelic_rpm
74
80
  rack-cache
75
81
  rack-test
82
+ rake
76
83
  rspec
77
84
  webmock
data/README.md CHANGED
@@ -8,9 +8,10 @@ If no query params are provided, a simple sandbox page is displayed. Try it her
8
8
 
9
9
  [magickly.afeld.me](http://magickly.afeld.me)
10
10
 
11
- Blog post about how it's used at <a href="https://jux.com">Jux</a>:
11
+ More insights:
12
12
 
13
- [aidan.jux.com/nerdery/310516](https://aidan.jux.com/nerdery/310516)
13
+ * [Blog post](https://aidan.jux.com/nerdery/310516) about how it's used at <a href="https://jux.com">Jux</a>
14
+ * [Talk](http://www.hakkalabs.co/articles/anatomy-ruby-gem-magickly) at [Anatomy of a Ruby Gem](http://www.meetup.com/Anatomy-of-a-Ruby-Gem/events/163904202/) ([slides](https://docs.google.com/presentation/d/1vuXqmMOssslx3nRxqWh1e3SgGN7_euYdVMIWm94DDPA/edit?usp=sharing))
14
15
 
15
16
  ## Installation
16
17
 
@@ -195,7 +196,6 @@ See the [Dragonfly documentation](http://markevans.github.com/dragonfly/file.Gen
195
196
 
196
197
  The hosted version of the app ([magickly.afeld.me](http://magickly.afeld.me)) is a single app instance intended for demonstration purposes - if you are going to be making a large number of API calls to it or would like to use it in production, please let us know :-)
197
198
 
198
- ## Credits
199
-
200
- Created by [Aidan Feldman](http://www.aidanfeldman.com) at [Jux.com](http://www.jux.com). Thanks to [Mark Evans](https://github.com/markevans) for all his hard work on [Dragonfly](http://markevans.github.com/dragonfly/).
199
+ ## See Also
201
200
 
201
+ * [Thumbor](http://thumbor.org/)
data/Rakefile CHANGED
@@ -1,9 +1,16 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ desc "Runs tests"
6
+ task default: :spec
7
+
1
8
  desc "Runs a performance test of different sigma values to tilt_shift"
2
9
  task :blur_test do
3
10
  file = File.join(File.dirname(__FILE__), 'spec', 'support', 'imagemagick.png')
4
11
  dir = File.join(File.dirname(__FILE__), 'test_output')
5
- Dir.mkdir(dir)
6
-
12
+ FileUtils.mkdir_p(dir)
13
+
7
14
  (5..10).each do |sigma|
8
15
  print "sigma: #{sigma} "
9
16
  out_file = File.join(dir, "blur_test-#{sigma}.png")
@@ -16,7 +23,7 @@ task :blur_test do
16
23
  end
17
24
 
18
25
  # RESULTS:
19
- #
26
+ #
20
27
  # radius: 5 time: 2.090919
21
28
  # radius: 6 time: 2.855877
22
29
  # radius: 7 time: 3.800624
@@ -2,16 +2,16 @@ module Magickly
2
2
  class App < Sinatra::Base
3
3
  RESERVED_PARAMS = ['src']
4
4
  DEMO_IMAGE = 'http://farm4.static.flickr.com/3351/3450592233_c29fde01ef_z.jpg'
5
-
5
+
6
6
  enable :logging
7
7
  set :root, File.join(File.dirname(__FILE__), '..')
8
8
  set :homepage, "http://github.com/afeld/magickly"
9
9
  set :protection, :except => :path_traversal
10
-
10
+
11
11
  configure :production do
12
- require 'newrelic_rpm' if ENV['NEW_RELIC_ID']
12
+ require 'newrelic_rpm' if ENV['NEW_RELIC_LICENSE_KEY']
13
13
  end
14
-
14
+
15
15
  before do
16
16
  # redirect to MAGICKLY_APP_DOMAIN, if specified
17
17
  app_host = ENV['MAGICKLY_APP_DOMAIN']
@@ -19,17 +19,10 @@ module Magickly
19
19
  request_host_with_port = request.env['HTTP_HOST']
20
20
  redirect request.url.sub(request_host_with_port, app_host), 301
21
21
  end
22
-
23
- # parse query params so they are ordered
24
- @options = ActiveSupport::OrderedHash.new
25
- request.query_string.split('&').each do |e|
26
- k,v = e.split('=')
27
- @options[k] = URI.unescape(v) unless RESERVED_PARAMS.include?(k)
28
- end
29
22
  end
30
-
23
+
31
24
  get '/' do
32
- process_src_or_display_demo params[:src], @options
25
+ process_src_or_display_demo params[:src], ordered_options
33
26
  end
34
27
 
35
28
  get '/q/*' do
@@ -43,26 +36,26 @@ module Magickly
43
36
 
44
37
  process_path decoded
45
38
  end
46
-
39
+
47
40
  get '/analyze' do
48
41
  @analyzers = Magickly.dragonfly.analyser_methods
49
42
  @analyzers.sort!{|m1, m2| m1.to_s <=> m2.to_s }
50
43
  erb :analyzers
51
44
  end
52
-
45
+
53
46
  get '/analyze/:name' do |method|
54
47
  src = params[:src]
55
48
  if src
56
49
  url = uri_to_url(src)
57
- image = Magickly.process_src(url, @options)
58
-
50
+ image = Magickly.process_src(url, ordered_options)
51
+
59
52
  begin
60
53
  output = image.send(method.to_sym)
61
54
  rescue NoMethodError
62
55
  method = method.to_s + '?'
63
56
  output = image.send(method.to_sym)
64
57
  end
65
-
58
+
66
59
  output.is_a?(String) ? output : output.to_json
67
60
  else
68
61
  status 400
@@ -73,7 +66,7 @@ module Magickly
73
66
  def process_path splat
74
67
  src = nil
75
68
  opts = []
76
-
69
+
77
70
  splat.split('/').each_slice(2) do |k, v|
78
71
  if RESERVED_PARAMS.include? k
79
72
  if k == 'src'
@@ -98,20 +91,29 @@ module Magickly
98
91
  image.to_response(env)
99
92
  else
100
93
  # display demo page
101
-
94
+
102
95
  # get combined list of jobs and processor methods
103
96
  @methods = ( Magickly.dragonfly.job_methods | Magickly.dragonfly.processor_methods )
104
97
  @methods.sort!{|m1, m2| m1.to_s <=> m2.to_s }
105
98
  erb :index
106
99
  end
107
100
  end
108
-
101
+
102
+ def ordered_options
103
+ options = ActiveSupport::OrderedHash.new
104
+ request.query_string.split('&').each do |e|
105
+ k,v = e.split('=')
106
+ options[k] = URI.unescape(v) unless RESERVED_PARAMS.include?(k)
107
+ end
108
+ options
109
+ end
110
+
109
111
  def uri_to_url(uri)
110
112
  url = Addressable::URI.parse(uri)
111
113
  url.site ||= Addressable::URI.parse(request.url).site
112
114
  url.to_s
113
115
  end
114
-
116
+
115
117
  # start the server if ruby file executed directly
116
118
  run! if __FILE__ == $0
117
119
  end
@@ -1,3 +1,3 @@
1
1
  module Magickly
2
- VERSION = '2.0.1'
2
+ VERSION = '2.0.2'
3
3
  end
@@ -94,4 +94,8 @@ Magickly.dragonfly.configure do |c|
94
94
  end
95
95
  palette
96
96
  end
97
+
98
+ c.job :output do |val|
99
+ encode val.to_sym
100
+ end
97
101
  end
@@ -28,7 +28,7 @@ describe Magickly::App do
28
28
  describe "GET /" do
29
29
  it "should display the demo page for no params" do
30
30
  get '/'
31
- last_response.status.should eq(200)
31
+ expect(last_response.status).to eq(200)
32
32
  # TODO test that it renders the view
33
33
  end
34
34
 
@@ -37,8 +37,8 @@ describe Magickly::App do
37
37
 
38
38
  get "/?src=#{@image_url}"
39
39
 
40
- a_request(:get, @image_url).should have_been_made.once
41
- last_response.status.should eq(200)
40
+ expect(a_request(:get, @image_url)).to have_been_made.once
41
+ expect(last_response.status).to eq(200)
42
42
 
43
43
  # check that the returned file is identical to the original
44
44
  compare_binary(last_response.body, IO.read(@image_path))
@@ -49,8 +49,8 @@ describe Magickly::App do
49
49
 
50
50
  get "/?src=#{@image_url}&bad_param=666"
51
51
 
52
- a_request(:get, @image_url).should have_been_made.once
53
- last_response.status.should eq(200)
52
+ expect(a_request(:get, @image_url)).to have_been_made.once
53
+ expect(last_response.status).to eq(200)
54
54
 
55
55
  # check that the returned file is identical to the original
56
56
  compare_binary(last_response.body, IO.read(@image_path))
@@ -61,8 +61,8 @@ describe Magickly::App do
61
61
 
62
62
  get "/?src=/#{@image_filename}"
63
63
 
64
- a_request(:get, @image_url).should have_been_made.once
65
- last_response.status.should eq(200)
64
+ expect(a_request(:get, @image_url)).to have_been_made.once
65
+ expect(last_response.status).to eq(200)
66
66
 
67
67
  # check that the returned file is identical to the original
68
68
  compare_binary(last_response.body, IO.read(@image_path))
@@ -74,9 +74,18 @@ describe Magickly::App do
74
74
 
75
75
  file = get_image "/?src=#{@image_url}&resize=#{width}x"
76
76
 
77
- a_request(:get, @image_url).should have_been_made.once
78
- last_response.status.should eq(200)
79
- FastImage.size(file)[0].should eq(width)
77
+ expect(a_request(:get, @image_url)).to have_been_made.once
78
+ expect(last_response.status).to eq(200)
79
+ expect(FastImage.size(file)[0]).to eq(width)
80
+ end
81
+
82
+ it "outputs an image in a new format" do
83
+ setup_image
84
+
85
+ file = get_image "/?src=#{@image_url}&output=gif"
86
+
87
+ expect(a_request(:get, @image_url)).to have_been_made.once
88
+ expect(FastImage.type(file)).to eq(:gif)
80
89
  end
81
90
 
82
91
  it "should use my Dragonfly shortcut with no arguments" do
@@ -91,8 +100,8 @@ describe Magickly::App do
91
100
 
92
101
  file = get_image "/?src=#{@image_url}&#{shortcut}=true"
93
102
 
94
- last_response.status.should eq(200)
95
- FastImage.size(file)[0].should eq width
103
+ expect(last_response.status).to eq(200)
104
+ expect(FastImage.size(file)[0]).to eq width
96
105
  end
97
106
 
98
107
  it "should use my Dragonfly shortcut with one argument" do
@@ -107,8 +116,8 @@ describe Magickly::App do
107
116
 
108
117
  file = get_image "/?src=#{@image_url}&#{shortcut}=#{width}x"
109
118
 
110
- last_response.status.should eq(200)
111
- FastImage.size(file)[0].should eq width
119
+ expect(last_response.status).to eq(200)
120
+ expect(FastImage.size(file)[0]).to eq width
112
121
  end
113
122
  end
114
123
 
@@ -120,9 +129,9 @@ describe Magickly::App do
120
129
 
121
130
  file = get_image "/q/src/#{@escaped_image_url}/resize/#{width}x"
122
131
 
123
- a_request(:get, @image_url).should have_been_made.once
124
- last_response.status.should eq(200)
125
- FastImage.size(file)[0].should eq width
132
+ expect(a_request(:get, @image_url)).to have_been_made.once
133
+ expect(last_response.status).to eq(200)
134
+ expect(FastImage.size(file)[0]).to eq width
126
135
  end
127
136
 
128
137
  end
@@ -142,9 +151,9 @@ describe Magickly::App do
142
151
 
143
152
  file = get_image "/qe/#{encoded}"
144
153
 
145
- a_request(:get, @image_url).should have_been_made.once
146
- last_response.status.should eq(200)
147
- FastImage.size(file)[0].should eq width
154
+ expect(a_request(:get, @image_url)).to have_been_made.once
155
+ expect(last_response.status).to eq(200)
156
+ expect(FastImage.size(file)[0]).to eq width
148
157
  end
149
158
 
150
159
  end
@@ -155,9 +164,9 @@ describe Magickly::App do
155
164
 
156
165
  get "/analyze/mime_type?src=#{@image_url}"
157
166
 
158
- a_request(:get, @image_url).should have_been_made.once
159
- last_response.status.should eq(200)
160
- last_response.body.should eq 'image/png'
167
+ expect(a_request(:get, @image_url)).to have_been_made.once
168
+ expect(last_response.status).to eq(200)
169
+ expect(last_response.body).to eq 'image/png'
161
170
  end
162
171
 
163
172
  it "retrieves the color palette of an image" do
@@ -165,23 +174,23 @@ describe Magickly::App do
165
174
 
166
175
  get "/analyze/color_palette?src=#{@image_url}"
167
176
 
168
- a_request(:get, @image_url).should have_been_made.once
169
- last_response.status.should eq(200)
170
- last_response.body.should_not be_empty
177
+ expect(a_request(:get, @image_url)).to have_been_made.once
178
+ expect(last_response.status).to eq(200)
179
+ expect(last_response.body).to_not be_empty
171
180
  json = ActiveSupport::JSON.decode(last_response.body)
172
- json.should be_an Array
173
- json.size.should eq 5
181
+ expect(json).to be_an Array
182
+ expect(json.size).to eq 5
174
183
  end
175
184
 
176
185
  it "should handle analyzer methods where the question mark is missing" do
177
- Magickly.dragonfly.analyser_methods.map{|m| m.to_s }.should include 'landscape?'
186
+ expect(Magickly.dragonfly.analyser_methods.map{|m| m.to_s }).to include 'landscape?'
178
187
  setup_image
179
188
 
180
189
  get "/analyze/landscape?src=#{@image_url}"
181
190
 
182
- a_request(:get, @image_url).should have_been_made.once
183
- last_response.status.should eq(200)
184
- last_response.body.should =~ /false/
191
+ expect(a_request(:get, @image_url)).to have_been_made.once
192
+ expect(last_response.status).to eq(200)
193
+ expect(last_response.body).to include('false')
185
194
  end
186
195
  end
187
196
  end
@@ -197,7 +206,7 @@ describe MagicklyApp do
197
206
 
198
207
  it "should display the demo page for no params" do
199
208
  get '/'
200
- last_response.status.should eq(200)
209
+ expect(last_response.status).to eq(200)
201
210
  # TODO test that it renders the view
202
211
  end
203
212
 
@@ -13,7 +13,7 @@ require 'fastimage'
13
13
  set :environment, :test
14
14
 
15
15
  RSpec.configure do |config|
16
-
16
+ config.raise_errors_for_deprecations!
17
17
  end
18
18
 
19
19
  def compare_binary(one, two)
@@ -22,6 +22,6 @@ def compare_binary(one, two)
22
22
  one = one.force_encoding("UTF-8")
23
23
  two = two.force_encoding("UTF-8")
24
24
  end
25
-
26
- one.should eq two
25
+
26
+ expect(one).to eq two
27
27
  end
@@ -9,10 +9,10 @@ describe Magickly do
9
9
 
10
10
  returned_image = Magickly.process_src(image_url)
11
11
 
12
- returned_image.should_not be_nil
12
+ expect(returned_image).to_not be_nil
13
13
 
14
14
  # check that the returned file is identical to the original
15
- IO.read(returned_image.file.path).should eq IO.read(image_path)
15
+ expect(IO.read(returned_image.file.path)).to eq IO.read(image_path)
16
16
  end
17
17
  end
18
18
 
@@ -8,7 +8,7 @@ describe Dragonfly::DataStorage::RemoteDataStore do
8
8
  datastore = Dragonfly::DataStorage::RemoteDataStore.new
9
9
 
10
10
  datastore.retrieve url
11
- a_request(:get, url).should have_been_made.once
11
+ expect(a_request(:get, url)).to have_been_made.once
12
12
  end
13
13
 
14
14
  it "should return the image" do
@@ -18,7 +18,7 @@ describe Dragonfly::DataStorage::RemoteDataStore do
18
18
  datastore = Dragonfly::DataStorage::RemoteDataStore.new
19
19
 
20
20
  image,extra = datastore.retrieve(url)
21
- image.should eq IO.read(image_path)
21
+ expect(image).to eq IO.read(image_path)
22
22
  end
23
23
 
24
24
  it "should fetch the image based on the url_host variable" do
@@ -33,7 +33,7 @@ describe Dragonfly::DataStorage::RemoteDataStore do
33
33
  end
34
34
 
35
35
  datastore.retrieve path
36
- a_request(:get, url).should have_been_made.once
36
+ expect(a_request(:get, url)).to have_been_made.once
37
37
  end
38
38
  end
39
39
  end
@@ -27,20 +27,20 @@ describe "Dragonfly shortcuts" do
27
27
  describe :color_palette do
28
28
  it "should return an array" do
29
29
  palette = @image.color_palette
30
- palette.should be_an Array
30
+ expect(palette).to be_an Array
31
31
  end
32
32
 
33
33
  it "should have the default number of colors" do
34
34
  palette = @image.color_palette
35
- palette.length.should eq Magickly::DEFAULT_PALETTE_COLOR_COUNT
35
+ expect(palette.length).to eq Magickly::DEFAULT_PALETTE_COLOR_COUNT
36
36
  end
37
37
 
38
38
  it "should have the specified number of colors" do
39
39
  num_colors = 4
40
- num_colors.should_not eq Magickly::DEFAULT_PALETTE_COLOR_COUNT
40
+ expect(num_colors).to_not eq Magickly::DEFAULT_PALETTE_COLOR_COUNT
41
41
 
42
42
  palette = @image.color_palette(num_colors)
43
- palette.length.should eq num_colors
43
+ expect(palette.length).to eq num_colors
44
44
  end
45
45
  end
46
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magickly
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aidan Feldman
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.2.0
136
+ rubygems_version: 2.4.5
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: image manipulation as a (plugin-able) service