class HerokuAutoScale::Manager

Constants

MNGR_ATTRIBUTES

Public Class Methods

new(options={}) click to toggle source
# File lib/heroku_auto_scale/manager.rb, line 21
def initialize(options={})
  options = HerokuAutoScale.options.merge(options)
  Configuration::CONFIGURATION_OPTIONS.each do |key|
    send("#{key}=", options[key])
  end

  init_redis_operations
  init_heroku_operations
end

Public Instance Methods

calculate_number_of_needed_dynos() click to toggle source
# 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() click to toggle source
# 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() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/heroku_auto_scale/manager.rb, line 51
def set_scaling_step(scaling_step)
  @scaling_step = scaling_step
end

Private Instance Methods

init_heroku_operations() click to toggle source
# File lib/heroku_auto_scale/manager.rb, line 73
def init_heroku_operations
  @heroku_operations = HerokuAutoScale::
    HerokuOperations.new(
      heroku_oauth_token,
      heroku_app_name
  )
end
init_redis_operations() click to toggle source
# File lib/heroku_auto_scale/manager.rb, line 69
def init_redis_operations
  @redis_operations = HerokuAutoScale::RedisOperations.new(redis_url)
end