heroku_scale_scheduler 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -19,27 +19,26 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  1. run the folllow commands
22
-
23
22
  ```
24
23
  $ bundle exec rails g heroku_scale_scheduler:install
25
24
  ```
26
-
27
- 2. write your scheduling configuration to config/heroku_ps.yml. notice: schedule time is must be 10 minutes periods.
25
+ 2. write your scheduling configuration to config/heroku_ps.yml. **Notice: schedule time is must be 10 minutes periods.**
28
26
  3. add Heroku scheduler addons.
29
- 4. visit your Heroku scheduler dashboard, and added follow tasks
30
-
27
+ 4. visit your Heroku scheduler dashboard, if you use bomboo stack added follow tasks
31
28
  <table>
32
- <tr><th>TASK</th><th>FREQUENCY<th></tr>
33
- <tr><td>rake heroku:scale:dynos</td><td>Every 10 minutes</td></tr>
34
- <tr><td>rake heroku:scale:workers</td><td>Every 10 minutes</td></tr>
29
+ <tr><th>TASK</th><th>FREQUENCY</th></tr>
30
+ <tr><td>heroku:scale:dynos</td><td>Every 10 minutes</td></tr>
31
+ <tr><td>heroku:scale:workers</td><td>Every 10 minutes</td></tr>
32
+ <table>
33
+ or use cedar stack
34
+ <table>
35
+ <tr><th>TASK</th><th>FREQUENCY</th></tr>
36
+ <tr><td>heroku:scale:ps</td><td>Every 10 minutes</td></tr>
35
37
  <table>
36
-
37
38
  5. add your heroku api key to Heroku env. example for
38
-
39
39
  ```
40
40
  $ heroku config:add HEROKU_API_KEY=xxx --app example_app
41
41
  ```
42
-
43
42
  6. push your app for heroku.
44
43
 
45
44
  ## Contributing
@@ -1,9 +1,18 @@
1
1
  app: example_app
2
2
 
3
- dynos:
3
+ # bomboo stack example
4
+ # dynos:
5
+ # 900: 2
6
+ # 2200: 1
7
+
8
+ # workers:
9
+ # 900: 1
10
+ # 2200: 0
11
+
12
+ web:
4
13
  900: 2
5
14
  2200: 1
6
15
 
7
- workers:
16
+ worker:
8
17
  900: 1
9
18
  2200: 0
@@ -2,20 +2,22 @@ require 'heroku/client'
2
2
 
3
3
  module HerokuScaleScheduler
4
4
  class Client
5
- def initialize(type)
6
- @type = type
7
- end
8
-
9
- def run
5
+ def run(type = :ps)
10
6
  client = Heroku::Client.new(*Heroku::Auth.read_credentials)
11
7
  config = HerokuScaleScheduler::Config.read_config
12
8
  run_at = (Time.now.strftime('%H%M').to_i / 10) * 10
13
9
 
14
- if qty = config[@type.to_s][run_at]
15
- case @type
10
+ if type != :ps && qty = config[type.to_s][run_at]
11
+ case type
16
12
  when :dynos then client.set_dynos(config['app'], qty)
17
13
  when :workers then client.set_workers(config['app'], qty)
18
14
  end
15
+ else
16
+ config.keys.each do |ps|
17
+ if qty = config[ps][run_at]
18
+ client.ps_scale(config['app'], :type => ps, :qty => qty)
19
+ end
20
+ end
19
21
  end
20
22
  end
21
23
  end
@@ -2,7 +2,7 @@ module HerokuScaleScheduler
2
2
  class Config
3
3
  def self.read_config
4
4
  if File.exists? Rails.root.join('config', 'heroku_ps.yml')
5
- YAML.load(Rails.root.join('config', 'heroku_ps.yml'))
5
+ YAML.load(File.read(Rails.root.join('config', 'heroku_ps.yml')))
6
6
  else
7
7
  {}
8
8
  end
@@ -1,13 +1,19 @@
1
+ client = HerokuScaleScheduler::Client.new
1
2
  namespace :heroku do
2
3
  namespace :scale do
3
4
  desc 'scaling heroku dynos'
4
5
  task :dynos do
5
- HerokuScaleScheduler::Client.new(:dynos).run
6
+ client.run(:dynos)
6
7
  end
7
8
 
8
9
  desc 'scaling heroku workers'
9
10
  task :workers do
10
- HerokuScaleScheduler::Client.new(:workers).run
11
+ client.run(:workers)
12
+ end
13
+
14
+ desc 'scaling heroku process'
15
+ task :ps do
16
+ client.run
11
17
  end
12
18
  end
13
19
  end
@@ -1,3 +1,3 @@
1
1
  module HerokuScaleScheduler
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_scale_scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: heroku
16
- requirement: &2249401240 !ruby/object:Gem::Requirement
16
+ requirement: &70136958620780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2249401240
24
+ version_requirements: *70136958620780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: railties
27
- requirement: &2249400720 !ruby/object:Gem::Requirement
27
+ requirement: &70136958619920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2249400720
35
+ version_requirements: *70136958619920
36
36
  description: scaling scheduler for heroku dynos/workers
37
37
  email:
38
38
  - shibata.hiroshi@gmail.com
@@ -66,12 +66,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
66
  - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ segments:
70
+ - 0
71
+ hash: -4106732824201842244
69
72
  required_rubygems_version: !ruby/object:Gem::Requirement
70
73
  none: false
71
74
  requirements:
72
75
  - - ! '>='
73
76
  - !ruby/object:Gem::Version
74
77
  version: '0'
78
+ segments:
79
+ - 0
80
+ hash: -4106732824201842244
75
81
  requirements: []
76
82
  rubyforge_project:
77
83
  rubygems_version: 1.8.17
@@ -79,4 +85,3 @@ signing_key:
79
85
  specification_version: 3
80
86
  summary: heroku_scale_scheduler is simple scaling scheduler for heroku dynos/workers.
81
87
  test_files: []
82
- has_rdoc: