Class: HerokuAutoScale::Manager
- Inherits:
-
Object
- Object
- HerokuAutoScale::Manager
- Defined in:
- lib/heroku_auto_scale/manager.rb
Constant Summary collapse
- MNGR_ATTRIBUTES =
[ :process_name, :queue_name, :redis_operations, :heroku_operations, :min_dynos, :max_dynos, :scaling_step ].freeze
Instance Method Summary collapse
- #calculate_number_of_needed_dynos ⇒ Object
- #get_number_of_jobs_inside_queue ⇒ Object
-
#initialize(options = {}) ⇒ Manager
constructor
A new instance of Manager.
- #manage_queue ⇒ Object
- #set_max_dynos(max_dynos) ⇒ Object
- #set_min_dynos(min_dynos) ⇒ Object
- #set_process_name(process_name) ⇒ Object
- #set_queue_name(queue_name) ⇒ Object
- #set_scaling_step(scaling_step) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Manager
Returns a new instance of Manager.
21 22 23 24 25 26 27 28 29 |
# File 'lib/heroku_auto_scale/manager.rb', line 21 def initialize(={}) = HerokuAutoScale..merge() Configuration::CONFIGURATION_OPTIONS.each do |key| send("#{key}=", [key]) end init_redis_operations init_heroku_operations end |
Instance Method Details
#calculate_number_of_needed_dynos ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/heroku_auto_scale/manager.rb', line 60 def calculate_number_of_needed_dynos current_jobs = get_number_of_jobs_inside_queue dynos = (current_jobs.to_f / scaling_step.to_f).ceil scale_to = [dynos, max_dynos].min scale_to = [scale_to, min_dynos].max end |
#get_number_of_jobs_inside_queue ⇒ Object
31 32 33 |
# File 'lib/heroku_auto_scale/manager.rb', line 31 def get_number_of_jobs_inside_queue redis_operations.check_queue_for_jobs(@queue_name) end |
#manage_queue ⇒ Object
55 56 57 58 |
# File 'lib/heroku_auto_scale/manager.rb', line 55 def manage_queue scale_to = calculate_number_of_needed_dynos heroku_operations.execute_dyno_scale(process_name, scale_to) end |
#set_max_dynos(max_dynos) ⇒ Object
47 48 49 |
# File 'lib/heroku_auto_scale/manager.rb', line 47 def set_max_dynos(max_dynos) @max_dynos = max_dynos end |
#set_min_dynos(min_dynos) ⇒ Object
43 44 45 |
# File 'lib/heroku_auto_scale/manager.rb', line 43 def set_min_dynos(min_dynos) @min_dynos = min_dynos end |
#set_process_name(process_name) ⇒ Object
35 36 37 |
# File 'lib/heroku_auto_scale/manager.rb', line 35 def set_process_name(process_name) @process_name = process_name end |
#set_queue_name(queue_name) ⇒ Object
39 40 41 |
# File 'lib/heroku_auto_scale/manager.rb', line 39 def set_queue_name(queue_name) @queue_name = queue_name end |
#set_scaling_step(scaling_step) ⇒ Object
51 52 53 |
# File 'lib/heroku_auto_scale/manager.rb', line 51 def set_scaling_step(scaling_step) @scaling_step = scaling_step end |