dyno_scaler 0.2.0 → 0.3.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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ N2RiYzBkZGQ3NDE1N2IwNzc0M2QyMTEwZDhjMmI1NTBmNjgxYmMzNA==
5
+ data.tar.gz: !binary |-
6
+ ZWRhYjU2YzM4Y2U1MDFmYmVjOGUzNzU3NjI0YjdkMzM0OTJiOTgxMg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTc5Mjg1ZThiOGRlNjZhY2ZhYzY2NzQzYjU3ZWUyNGEzMjllNzAyZDVmNGZi
10
+ NGZmNWEwZTRjZDdjYTY1ZWYxYWIwNmQ3Mzg3OWEwODI5OTI2ZDA4ZGMxOGMw
11
+ Yjg2NTNkZGFiMmIwMzk5NjVkZDkwNDA3YzAyM2I4OTA0MGU1YzQ=
12
+ data.tar.gz: !binary |-
13
+ ZDkwYzA2ZjdmNWNiOGZlZjkwOTMzMjVmMDg0NTI4ZTllMjAyZDkzMGM3NTMx
14
+ NjY2MjI2YThmYmZhOTAzNTQ4N2FhMjI4OWUwMzM0NDQzYzI1OTFmZjMyZGZk
15
+ YmQ1ZGM5N2M3Y2Q0N2IyNzExNjI2MjdiODgxMjkxYzY0Mzg0MDk=
data/.rspec CHANGED
@@ -1,4 +1,3 @@
1
1
  --color
2
2
  --format documentation
3
- --debug
4
3
  --drb
data/.travis.yml CHANGED
@@ -1,5 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
3
  - 1.9.3
5
4
  - jruby-19mode # JRuby in 1.9 mode
5
+ services:
6
+ - redis-server
7
+ bundler_args: --without development
data/Gemfile CHANGED
@@ -10,11 +10,17 @@ group(:development) do
10
10
 
11
11
  platforms :jruby do
12
12
  gem 'ruby-debug'
13
- gem 'jruby-openssl'
14
13
  end
15
14
  end
16
15
 
16
+ platforms :jruby do
17
+ gem 'jruby-openssl'
18
+ end
19
+
17
20
  group(:test) do
18
21
  gem 'simplecov', require: false
22
+ gem 'rspec'
23
+ gem 'resque'
24
+ gem 'girl_friday'
19
25
  gem 'rails'
20
26
  end
data/Gemfile.lock CHANGED
@@ -1,76 +1,112 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dyno_scaler (0.2.0)
4
+ dyno_scaler (0.3.0)
5
5
  activesupport
6
6
  heroku-api
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionmailer (0.6.1)
12
- actionpack (>= 0.9.5)
13
- actionpack (1.4.0)
14
- activemodel (3.2.13)
15
- activesupport (= 3.2.13)
16
- builder (~> 3.0.0)
17
- activerecord (3.2.13)
18
- activemodel (= 3.2.13)
19
- activesupport (= 3.2.13)
20
- arel (~> 3.0.2)
21
- tzinfo (~> 0.3.29)
22
- activesupport (3.2.13)
23
- i18n (= 0.6.1)
24
- multi_json (~> 1.0)
25
- arel (3.0.2)
11
+ actionmailer (4.1.1)
12
+ actionpack (= 4.1.1)
13
+ actionview (= 4.1.1)
14
+ mail (~> 2.5.4)
15
+ actionpack (4.1.1)
16
+ actionview (= 4.1.1)
17
+ activesupport (= 4.1.1)
18
+ rack (~> 1.5.2)
19
+ rack-test (~> 0.6.2)
20
+ actionview (4.1.1)
21
+ activesupport (= 4.1.1)
22
+ builder (~> 3.1)
23
+ erubis (~> 2.7.0)
24
+ activemodel (4.1.1)
25
+ activesupport (= 4.1.1)
26
+ builder (~> 3.1)
27
+ activerecord (4.1.1)
28
+ activemodel (= 4.1.1)
29
+ activesupport (= 4.1.1)
30
+ arel (~> 5.0.0)
31
+ activesupport (4.1.1)
32
+ i18n (~> 0.6, >= 0.6.9)
33
+ json (~> 1.7, >= 1.7.7)
34
+ minitest (~> 5.1)
35
+ thread_safe (~> 0.1)
36
+ tzinfo (~> 1.1)
37
+ arel (5.0.1.20140414130214)
26
38
  bouncy-castle-java (1.5.0147)
27
- builder (3.0.4)
28
- columnize (0.3.6)
29
- connection_pool (1.0.0)
30
- debugger (1.6.0)
39
+ builder (3.2.2)
40
+ columnize (0.8.9)
41
+ connection_pool (1.2.0)
42
+ debugger (1.6.7)
31
43
  columnize (>= 0.3.1)
32
44
  debugger-linecache (~> 1.2.0)
33
- debugger-ruby_core_source (~> 1.2.1)
45
+ debugger-ruby_core_source (~> 1.3.5)
34
46
  debugger-linecache (1.2.0)
35
- debugger-ruby_core_source (1.2.2)
36
- diff-lcs (1.2.4)
37
- excon (0.22.1)
47
+ debugger-ruby_core_source (1.3.5)
48
+ diff-lcs (1.2.5)
49
+ docile (1.1.3)
50
+ erubis (2.7.0)
51
+ excon (0.33.0)
38
52
  girl_friday (0.11.2)
39
53
  connection_pool (~> 1.0)
40
54
  rubinius-actor
41
- heroku-api (0.3.11)
42
- excon (~> 0.22.1)
43
- i18n (0.6.1)
44
- jruby-openssl (0.8.8)
55
+ heroku-api (0.3.18)
56
+ excon (~> 0.27)
57
+ multi_json (~> 1.8)
58
+ hike (1.2.3)
59
+ i18n (0.6.9)
60
+ jruby-openssl (0.9.4)
45
61
  bouncy-castle-java (>= 1.5.0147)
62
+ json (1.8.1)
63
+ json (1.8.1-java)
64
+ mail (2.5.4)
65
+ mime-types (~> 1.16)
66
+ treetop (~> 1.4.8)
67
+ mime-types (1.25.1)
68
+ minitest (5.3.4)
46
69
  mono_logger (1.1.0)
47
- multi_json (1.7.4)
70
+ multi_json (1.10.1)
71
+ polyglot (0.3.4)
48
72
  rack (1.5.2)
49
- rack-protection (1.5.0)
73
+ rack-protection (1.5.3)
50
74
  rack
51
- rails (0.9.5)
52
- actionmailer (>= 0.6.1)
53
- actionpack (>= 1.4.0)
54
- activerecord (>= 1.6.0)
55
- rake (>= 0.4.15)
56
- rake (10.0.4)
57
- redis (3.0.4)
58
- redis-namespace (1.3.0)
59
- redis (~> 3.0.0)
60
- resque (1.24.1)
75
+ rack-test (0.6.2)
76
+ rack (>= 1.0)
77
+ rails (4.1.1)
78
+ actionmailer (= 4.1.1)
79
+ actionpack (= 4.1.1)
80
+ actionview (= 4.1.1)
81
+ activemodel (= 4.1.1)
82
+ activerecord (= 4.1.1)
83
+ activesupport (= 4.1.1)
84
+ bundler (>= 1.3.0, < 2.0)
85
+ railties (= 4.1.1)
86
+ sprockets-rails (~> 2.0)
87
+ railties (4.1.1)
88
+ actionpack (= 4.1.1)
89
+ activesupport (= 4.1.1)
90
+ rake (>= 0.8.7)
91
+ thor (>= 0.18.1, < 2.0)
92
+ rake (10.3.2)
93
+ redis (3.0.7)
94
+ redis-namespace (1.4.1)
95
+ redis (~> 3.0.4)
96
+ resque (1.25.2)
61
97
  mono_logger (~> 1.0)
62
98
  multi_json (~> 1.0)
63
- redis-namespace (~> 1.2)
99
+ redis-namespace (~> 1.3)
64
100
  sinatra (>= 0.9.2)
65
101
  vegas (~> 0.1.2)
66
- rspec (2.13.0)
67
- rspec-core (~> 2.13.0)
68
- rspec-expectations (~> 2.13.0)
69
- rspec-mocks (~> 2.13.0)
70
- rspec-core (2.13.1)
71
- rspec-expectations (2.13.0)
102
+ rspec (2.14.1)
103
+ rspec-core (~> 2.14.0)
104
+ rspec-expectations (~> 2.14.0)
105
+ rspec-mocks (~> 2.14.0)
106
+ rspec-core (2.14.8)
107
+ rspec-expectations (2.14.5)
72
108
  diff-lcs (>= 1.1.3, < 2.0)
73
- rspec-mocks (2.13.1)
109
+ rspec-mocks (2.14.6)
74
110
  rubinius-actor (0.0.2)
75
111
  rubinius-core-api
76
112
  rubinius-core-api (0.0.1)
@@ -79,16 +115,33 @@ GEM
79
115
  columnize (>= 0.1)
80
116
  ruby-debug-base (~> 0.10.4.0)
81
117
  ruby-debug-base (0.10.4-java)
82
- simplecov (0.7.1)
83
- multi_json (~> 1.0)
84
- simplecov-html (~> 0.7.1)
85
- simplecov-html (0.7.1)
86
- sinatra (1.4.2)
87
- rack (~> 1.5, >= 1.5.2)
118
+ simplecov (0.8.2)
119
+ docile (~> 1.1.0)
120
+ multi_json
121
+ simplecov-html (~> 0.8.0)
122
+ simplecov-html (0.8.0)
123
+ sinatra (1.4.5)
124
+ rack (~> 1.4)
88
125
  rack-protection (~> 1.4)
89
126
  tilt (~> 1.3, >= 1.3.4)
127
+ sprockets (2.12.1)
128
+ hike (~> 1.2)
129
+ multi_json (~> 1.0)
130
+ rack (~> 1.0)
131
+ tilt (~> 1.1, != 1.3.0)
132
+ sprockets-rails (2.1.3)
133
+ actionpack (>= 3.0)
134
+ activesupport (>= 3.0)
135
+ sprockets (~> 2.8)
136
+ thor (0.19.1)
137
+ thread_safe (0.3.3)
138
+ thread_safe (0.3.3-java)
90
139
  tilt (1.4.1)
91
- tzinfo (0.3.37)
140
+ treetop (1.4.15)
141
+ polyglot
142
+ polyglot (>= 0.3.1)
143
+ tzinfo (1.2.0)
144
+ thread_safe (~> 0.1)
92
145
  vegas (0.1.11)
93
146
  rack (>= 1.0.0)
94
147
 
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # DynoScaler
2
2
 
3
- [![alt build status][1]][2]
3
+ [![build status][1]][2]
4
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/dtmtec/dyno_scaler/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
4
5
 
5
- [1]: https://travis-ci.org/dtmconsultoria/dyno_scaler.png?branch=master
6
- [2]: http://travis-ci.org/dtmconsultoria/dyno_scaler
6
+ [1]: https://travis-ci.org/dtmtec/dyno_scaler.png
7
+ [2]: http://travis-ci.org/dtmtec/dyno_scaler
7
8
 
8
9
  Scale your dyno workers on Heroku as needed, pay only for what you use!
9
10
 
data/dyno_scaler.gemspec CHANGED
@@ -19,8 +19,4 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency "heroku-api"
21
21
  gem.add_dependency "activesupport"
22
-
23
- gem.add_development_dependency "rspec"
24
- gem.add_development_dependency "resque"
25
- gem.add_development_dependency "girl_friday"
26
22
  end
@@ -1,3 +1,3 @@
1
1
  module DynoScaler
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -15,6 +15,10 @@ module DynoScaler
15
15
  enable_scaling_down
16
16
  end
17
17
 
18
+ def scale(&block)
19
+ self.class.scale(&block)
20
+ end
21
+
18
22
  module ClassMethods
19
23
  def after_perform_scale_down(*args)
20
24
  info = ::Resque.info
@@ -27,7 +31,7 @@ module DynoScaler
27
31
  end
28
32
 
29
33
  def after_enqueue_scale_up(*args)
30
- if scale_up_enabled?
34
+ if scale_up_enabled? && !scaling?
31
35
  if DynoScaler.configuration.async?
32
36
  DynoScaler.configuration.async.call(::Resque.info.merge(action: :scale_up))
33
37
  else
@@ -54,6 +58,18 @@ module DynoScaler
54
58
  self.scale_down_enabled = false
55
59
  end
56
60
 
61
+ def scaling?
62
+ @scaling
63
+ end
64
+
65
+ def scale(&block)
66
+ @scaling = true
67
+ result = block.call if block_given?
68
+ dyno_scaler_manager.scale_with(::Resque.info)
69
+ @scaling = false
70
+ result
71
+ end
72
+
57
73
  private
58
74
  def dyno_scaler_manager
59
75
  @manager ||= DynoScaler::Manager.new
@@ -6,10 +6,10 @@ describe DynoScaler::Heroku do
6
6
  subject(:heroku_client) { DynoScaler::Heroku.new application, options }
7
7
 
8
8
  describe "scaling workers" do
9
- let(:heroku_api) { mock(::Heroku::API, :post_ps_scale => false) }
9
+ let(:heroku_api) { double(::Heroku::API, :post_ps_scale => false) }
10
10
 
11
11
  before do
12
- ::Heroku::API.stub!(:new).and_return(heroku_api)
12
+ ::Heroku::API.stub(:new).and_return(heroku_api)
13
13
  end
14
14
 
15
15
  let(:quantity) { 2 }
@@ -5,7 +5,7 @@ describe DynoScaler::Manager do
5
5
 
6
6
  subject(:manager) { DynoScaler::Manager.new }
7
7
 
8
- let(:heroku) { mock(DynoScaler::Heroku, scale_workers: false) }
8
+ let(:heroku) { double(DynoScaler::Heroku, scale_workers: false) }
9
9
 
10
10
  let(:workers) { 0 }
11
11
  let(:pending_jobs) { 0 }
@@ -27,7 +27,7 @@ describe DynoScaler::Manager do
27
27
  config.application = 'my-app'
28
28
  config.enabled = true
29
29
 
30
- DynoScaler::Heroku.stub!(:new).with(config.application).and_return(heroku)
30
+ DynoScaler::Heroku.stub(:new).with(config.application).and_return(heroku)
31
31
  end
32
32
 
33
33
  shared_examples_for "disabled" do
@@ -348,7 +348,7 @@ describe DynoScaler::Manager do
348
348
  end
349
349
 
350
350
  describe "running workers" do
351
- let(:heroku) { mock(DynoScaler::Heroku, scale_workers: false, running_workers: 2) }
351
+ let(:heroku) { double(DynoScaler::Heroku, scale_workers: false, running_workers: 2) }
352
352
 
353
353
  its(:running_workers) { should eq(heroku.running_workers) }
354
354
  end
@@ -17,23 +17,25 @@ class SampleJob
17
17
  end
18
18
 
19
19
  describe DynoScaler::Workers::Resque do
20
- let(:manager) { mock(DynoScaler::Manager, scale_up: false, scale_down: false) }
20
+ let(:manager) { double(DynoScaler::Manager, scale_up: false, scale_down: false) }
21
21
 
22
22
  let(:workers) { 0 }
23
23
  let(:working) { 0 }
24
24
  let(:pending) { 1 }
25
25
 
26
26
  before do
27
- Resque.stub!(:info).and_return({
27
+ Resque.stub(:info).and_return({
28
28
  workers: workers,
29
29
  working: working,
30
30
  pending: pending
31
31
  })
32
32
 
33
33
  SampleJob.reset!
34
- DynoScaler::Manager.stub!(:new).and_return(manager)
34
+ DynoScaler::Manager.stub(:new).and_return(manager)
35
35
  end
36
36
 
37
+ after { DynoScaler.configuration.async = false }
38
+
37
39
  def work_off(queue)
38
40
  job = Resque::Job.reserve(queue)
39
41
  job ? job.perform : fail("No jobs for queue '#{queue}'.")
@@ -63,6 +65,25 @@ describe DynoScaler::Workers::Resque do
63
65
  end
64
66
  end
65
67
 
68
+ context "when it is scaling" do
69
+ before { SampleJob.stub(:scaling?).and_return(true) }
70
+
71
+ it "does not scales up" do
72
+ manager.should_not_receive(:scale_up)
73
+ Resque.enqueue(SampleJob)
74
+ end
75
+
76
+ context "and async is configured" do
77
+ let(:config) { DynoScaler.configuration }
78
+ before { config.async = true }
79
+
80
+ it "does not calls the given async processor" do
81
+ config.async.should_not_receive(:call)
82
+ Resque.enqueue(SampleJob)
83
+ end
84
+ end
85
+ end
86
+
66
87
  context "when scaling up is disabled" do
67
88
  before { SampleJob.disable_scaling_up }
68
89
  after { SampleJob.enable_scaling_up }
@@ -75,7 +96,7 @@ describe DynoScaler::Workers::Resque do
75
96
 
76
97
  context "when an error occurs while scaling up" do
77
98
  before do
78
- manager.stub!(:scale_up).and_raise("error")
99
+ manager.stub(:scale_up).and_raise("error")
79
100
  end
80
101
 
81
102
  it "does not raises it" do
@@ -135,6 +156,56 @@ describe DynoScaler::Workers::Resque do
135
156
  end
136
157
  end
137
158
 
159
+ describe "#scale" do
160
+ it "calls the Klass.scale" do
161
+ block = Proc.new { |a| }
162
+ SampleJob.should_receive(:scale).and_yield(block)
163
+ SampleJob.new.scale(&block)
164
+ end
165
+ end
166
+
167
+ describe ".scale" do
168
+ before { manager.stub(:scale_with) }
169
+
170
+ it "should not be scaling before it is run" do
171
+ SampleJob.should_not be_scaling
172
+ SampleJob.scale { }
173
+ end
174
+
175
+ it "should not be scaling after it is run" do
176
+ SampleJob.scale { }
177
+ SampleJob.should_not be_scaling
178
+ end
179
+
180
+ it "calls the given block" do
181
+ called = false
182
+ SampleJob.scale do
183
+ called = true
184
+ end
185
+
186
+ called.should be_true
187
+ end
188
+
189
+ it "sets scaling? to true inside the given block" do
190
+ SampleJob.scale do
191
+ SampleJob.should be_scaling
192
+ end
193
+ end
194
+
195
+ it "returns the result of the block" do
196
+ result = SampleJob.scale do
197
+ 'some value'
198
+ end
199
+
200
+ result.should eq('some value')
201
+ end
202
+
203
+ it "scales with Resque.info" do
204
+ manager.should_receive(:scale_with).with(Resque.info)
205
+ SampleJob.scale {}
206
+ end
207
+ end
208
+
138
209
  describe "after performing" do
139
210
  before do
140
211
  Resque.enqueue(SampleJob)
@@ -184,7 +255,7 @@ describe DynoScaler::Workers::Resque do
184
255
 
185
256
  context "when an error occurs while scaling down" do
186
257
  before do
187
- manager.stub!(:scale_down).and_raise("error")
258
+ manager.stub(:scale_down).and_raise("error")
188
259
  end
189
260
 
190
261
  it "does not raises it" do
data/spec/spec_helper.rb CHANGED
@@ -10,6 +10,11 @@ ENV['RACK_ENV'] ||= 'test'
10
10
 
11
11
  Bundler.require :default, ENV['RACK_ENV']
12
12
 
13
+ begin
14
+ require 'debugger'
15
+ rescue LoadError
16
+ end
17
+
13
18
  RSpec.configure do |config|
14
19
  config.treat_symbols_as_metadata_keys_with_true_values = true
15
20
  config.run_all_when_everything_filtered = true
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dyno_scaler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Vicente Mundim
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-28 00:00:00.000000000 Z
11
+ date: 2014-05-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: heroku-api
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,55 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: resque
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: girl_friday
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
37
  requirements:
91
38
  - - ! '>='
92
39
  - !ruby/object:Gem::Version
@@ -124,33 +71,26 @@ files:
124
71
  - spec/spec_helper.rb
125
72
  homepage: ''
126
73
  licenses: []
74
+ metadata: {}
127
75
  post_install_message:
128
76
  rdoc_options: []
129
77
  require_paths:
130
78
  - lib
131
79
  required_ruby_version: !ruby/object:Gem::Requirement
132
- none: false
133
80
  requirements:
134
81
  - - ! '>='
135
82
  - !ruby/object:Gem::Version
136
83
  version: '0'
137
- segments:
138
- - 0
139
- hash: 2224126621468173424
140
84
  required_rubygems_version: !ruby/object:Gem::Requirement
141
- none: false
142
85
  requirements:
143
86
  - - ! '>='
144
87
  - !ruby/object:Gem::Version
145
88
  version: '0'
146
- segments:
147
- - 0
148
- hash: 2224126621468173424
149
89
  requirements: []
150
90
  rubyforge_project:
151
- rubygems_version: 1.8.25
91
+ rubygems_version: 2.2.2
152
92
  signing_key:
153
- specification_version: 3
93
+ specification_version: 4
154
94
  summary: Scale your dyno workers on Heroku as needed
155
95
  test_files:
156
96
  - spec/dyno_scaler/configuration_spec.rb