heroku_scale_scheduler 0.0.1 → 0.0.2

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/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: