heroku_dj_auto_scale 0.0.7 → 0.0.8

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.
@@ -1,3 +1,3 @@
1
1
  module HerokuDjAutoScale
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -5,18 +5,40 @@ module HerokuDjAutoScale
5
5
  module Scaler
6
6
  class << self
7
7
 
8
- def get_heroku
9
- @heroku = Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASS']) if ENV['USE_HEROKU_SCALING'] == 'true'
8
+ def heroku
9
+ @heroku ||= Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASS']) if ENV['USE_HEROKU_SCALING'] == 'true'
10
10
  end
11
-
12
- def workers
13
- get_heroku
14
- ENV['USE_HEROKU_SCALING'] == 'true' ? @heroku.info(ENV['HEROKU_APP'])[:workers].to_i : 1
11
+
12
+ def stack
13
+ if ENV['USE_HEROKU_SCALING'] == 'true'
14
+ heroku.list_stacks(ENV['HEROKU_APP']).inject("") do |current,stack|
15
+ stack["current"] ? stack["name"] : current
16
+ end
17
+ else
18
+ "current"
19
+ end
15
20
  end
16
-
21
+
22
+ def get_workers
23
+ if ENV['USE_HEROKU_SCALING'] == 'true'
24
+ if stack == "cedar"
25
+ heroku.ps(ENV['HEROKU_APP']).count { |p| p["process"] =~ /worker\.\d?/ }
26
+ else
27
+ heroku.info(ENV['HEROKU_APP'])[:workers].to_i
28
+ end
29
+ else
30
+ 1
31
+ end
32
+ end
33
+
17
34
  def workers=(qty)
18
- get_heroku
19
- @heroku.set_workers(ENV['HEROKU_APP'], qty) if ENV['USE_HEROKU_SCALING'] == 'true'
35
+ if ENV['USE_HEROKU_SCALING'] == 'true'
36
+ if stack == "cedar"
37
+ heroku.ps_scale(ENV['HEROKU_APP'], :type => 'worker', :qty => qty)
38
+ else
39
+ heroku.set_workers(ENV['HEROKU_APP'], qty)
40
+ end
41
+ end
20
42
  end
21
43
 
22
44
  def job_count
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_dj_auto_scale
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 7
10
- version: 0.0.7
4
+ prerelease:
5
+ version: 0.0.8
11
6
  platform: ruby
12
7
  authors:
13
8
  - Joel Basson
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-03-23 00:00:00 +02:00
13
+ date: 2011-12-07 00:00:00 +02:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,9 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
24
  version: "0"
33
25
  type: :runtime
34
26
  version_requirements: *id001
@@ -40,9 +32,6 @@ dependencies:
40
32
  requirements:
41
33
  - - ">="
42
34
  - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
35
  version: "0"
47
36
  type: :runtime
48
37
  version_requirements: *id002
@@ -54,13 +43,6 @@ dependencies:
54
43
  requirements:
55
44
  - - ">="
56
45
  - !ruby/object:Gem::Version
57
- hash: 15424057
58
- segments:
59
- - 1
60
- - 0
61
- - 0
62
- - rc
63
- - 6
64
46
  version: 1.0.0.rc.6
65
47
  type: :development
66
48
  version_requirements: *id003
@@ -96,25 +78,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
78
  requirements:
97
79
  - - ">="
98
80
  - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
81
  version: "0"
103
82
  required_rubygems_version: !ruby/object:Gem::Requirement
104
83
  none: false
105
84
  requirements:
106
85
  - - ">="
107
86
  - !ruby/object:Gem::Version
108
- hash: 23
109
- segments:
110
- - 1
111
- - 3
112
- - 6
113
87
  version: 1.3.6
114
88
  requirements: []
115
89
 
116
90
  rubyforge_project: heroku_dj_auto_scale
117
- rubygems_version: 1.3.7
91
+ rubygems_version: 1.6.2
118
92
  signing_key:
119
93
  specification_version: 3
120
94
  summary: Allows auto-scaling of delayed job workers in Heroku