resque-heroku-scaling-canary 0.1.4 → 0.1.5

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -10,7 +10,7 @@ module Resque
10
10
  n = self.respond_to?(:minimum_workers_needed) ? self.minimum_workers_needed : 1
11
11
  return if Config.heroku_client.info(Config.heroku_app)[:workers].to_i >= n
12
12
  Config.heroku_client.set_workers(Config.heroku_app, n)
13
- Resque.enqueue(CanaryJob, Config.polling_interval) if CanaryJob.canary_jobs_pending == 0
13
+ Resque.enqueue(CanaryJob, Config.polling_interval) if CanaryJob.canary_jobs_outstanding == 0
14
14
  end
15
15
 
16
16
  def self.config
@@ -18,12 +18,12 @@ module Resque
18
18
  end
19
19
  end
20
20
 
21
- def self.canary_jobs_pending
22
- Resque.size(@queue)
21
+ def self.canary_jobs_outstanding
22
+ Resque.size(@queue) + Resque.workers.find_all{ |w| w.processing["queue"] == @queue }.count
23
23
  end
24
24
 
25
25
  def self.non_canary_jobs_pending
26
- waiting = Resque.queues.inject(0){ |accum, item| accum += Resque.size(item) unless item == @queue }
26
+ waiting = Resque.queues.reject{ |q| q == @queue}.inject(0){ |accum, item| accum += Resque.size(item) }
27
27
  being_processed = Resque.workers.find_all{ |w| w.processing["queue"] and w.processing["queue"] != @queue }.count
28
28
  waiting + being_processed
29
29
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "resque-heroku-scaling-canary"
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Aaron Windsor"]
@@ -22,9 +22,9 @@ describe Resque::Plugins::ScalingCanary do
22
22
  before(:each) do
23
23
  @mock_heroku_client = Object.new
24
24
  Resque::Plugins::ScalingCanary.config do |config|
25
- config.heroku_user = "stub"
26
- config.heroku_password = "stub"
27
- config.heroku_app = "stub"
25
+ config.heroku_user = "stub-user"
26
+ config.heroku_password = "stub-password"
27
+ config.heroku_app = "stub-app"
28
28
  config.polling_interval = 0
29
29
  config.stub(:heroku_client) { @mock_heroku_client }
30
30
  end
@@ -36,14 +36,14 @@ describe Resque::Plugins::ScalingCanary do
36
36
 
37
37
  describe "after_enqueue_ensure_heroku_workers" do
38
38
  it "should scale workers up to 1 if no :minimum_workers_needed method is implemented" do
39
- @mock_heroku_client.should_receive(:set_workers).with(1).once
40
- @mock_heroku_client.should_receive(:set_workers).with(0).once
39
+ @mock_heroku_client.should_receive(:set_workers).with("stub-app", 1).once
40
+ @mock_heroku_client.should_receive(:set_workers).with("stub-app", 0).once
41
41
  @mock_heroku_client.stub(:info) { {:workers => 0} }
42
42
  Resque.enqueue SmallBatchJob
43
43
  end
44
44
  it "should scale workers up to the number specified by :minimum_workers_needed if an implementation is provided" do
45
- @mock_heroku_client.should_receive(:set_workers).with(20).once
46
- @mock_heroku_client.should_receive(:set_workers).with(0).once
45
+ @mock_heroku_client.should_receive(:set_workers).with("stub-app", 20).once
46
+ @mock_heroku_client.should_receive(:set_workers).with("stub-app", 0).once
47
47
  @mock_heroku_client.stub(:info) { {:workers => 0} }
48
48
  Resque.enqueue LargeBatchJob
49
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-heroku-scaling-canary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: resque
16
- requirement: &2154765260 !ruby/object:Gem::Requirement
16
+ requirement: &2154772420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2154765260
24
+ version_requirements: *2154772420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: heroku
27
- requirement: &2154764780 !ruby/object:Gem::Requirement
27
+ requirement: &2154771940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.18'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2154764780
35
+ version_requirements: *2154771940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2154764300 !ruby/object:Gem::Requirement
38
+ requirement: &2154771460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.7'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2154764300
46
+ version_requirements: *2154771460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec-mocks
49
- requirement: &2154763820 !ruby/object:Gem::Requirement
49
+ requirement: &2154770980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '2.7'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2154763820
57
+ version_requirements: *2154770980
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &2154763340 !ruby/object:Gem::Requirement
60
+ requirement: &2154770500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2154763340
68
+ version_requirements: *2154770500
69
69
  description: Auto-scale Heroku workers for Resque
70
70
  email: aaron.windsor@gmail.com
71
71
  executables: []
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
101
  version: '0'
102
102
  segments:
103
103
  - 0
104
- hash: 2508096092828040406
104
+ hash: 1965787200204254741
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements: