heroscale 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- heroscale (0.0.2)
4
+ heroscale (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/heroscale.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "heroscale"
3
- s.version = "0.0.2"
3
+ s.version = "0.1.0"
4
4
 
5
5
  s.authors = ["Jacques Crocker"]
6
6
  s.summary = "Autoscale your heroku app"
@@ -11,10 +11,11 @@ module Heroscale
11
11
  queue_wait_time = env['HTTP_X_HEROKU_QUEUE_WAIT_TIME']
12
12
  queue_depth = env['HTTP_X_HEROKU_QUEUE_DEPTH']
13
13
  dynos_in_use = env['HTTP_X_HEROKU_DYNOS_IN_USE']
14
+ job_queue = count_jobs || 0
14
15
 
15
16
  if queue_wait_time and queue_depth and dynos_in_use
16
17
  # format the response on heroku
17
- res = %|{"heroku": true, "queue_wait_time": #{queue_wait_time.to_i}, "queue_depth": #{queue_depth.to_i}, "dynos_in_use": #{dynos_in_use.to_i}}|
18
+ res = %|{"heroku": true, "queue_wait_time": #{queue_wait_time.to_i}, "queue_depth": #{queue_depth.to_i}, "dynos_in_use": #{dynos_in_use.to_i}, "job_queue": #{job_queue}}|
18
19
  else
19
20
  res = %|{"heroku": false}|
20
21
  end
@@ -25,5 +26,21 @@ module Heroscale
25
26
  end
26
27
  end
27
28
 
29
+ protected
30
+
31
+ # count the pending jobs for Delayed::Job or Resque
32
+ def count_jobs
33
+ if defined?(Delayed::Job)
34
+ Delayed::Job.count
35
+ elsif defined?(Resque) and ENV["QUEUE"]
36
+ Resque.size(ENV["QUEUE"])
37
+ else
38
+ 0
39
+ end
40
+ rescue => e
41
+ puts "Error counting jobs: #{e.to_s}"
42
+ return 0
43
+ end
44
+
28
45
  end
29
46
  end
@@ -71,4 +71,11 @@ describe Heroscale::Middleware do
71
71
  end
72
72
  end
73
73
 
74
+ context "when DelayedJob is installed" do
75
+ it "should return the queue count"
76
+ end
77
+
78
+ context "when Resque is installed" do
79
+ it "should return the queue count"
80
+ end
74
81
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
+ - 1
7
8
  - 0
8
- - 2
9
- version: 0.0.2
9
+ version: 0.1.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jacques Crocker
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- hash: -2259297854901398522
97
+ hash: 1580003485100128021
98
98
  segments:
99
99
  - 0
100
100
  version: "0"
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - ">="
105
105
  - !ruby/object:Gem::Version
106
- hash: -2259297854901398522
106
+ hash: 1580003485100128021
107
107
  segments:
108
108
  - 0
109
109
  version: "0"