class RailsAutoscaleAgent::Config

Constants

DEFAULT_WORKER_ADAPTERS

Attributes

addon_name[RW]
api_base_url[RW]
debug[RW]
debug?[RW]
dev_mode[RW]
dev_mode?[RW]
dyno[RW]
latency_for_active_jobs[RW]
logger[RW]
max_request_size[RW]
quiet[RW]
quiet?[RW]
report_interval[RW]
sidekiq_latency_for_active_jobs[RW]
track_long_running_jobs[RW]
worker_adapters[RW]

Public Class Methods

new() click to toggle source
# File lib/rails_autoscale_agent/config.rb, line 18
def initialize
  @worker_adapters = prepare_worker_adapters

  # Allow the add-on name to be configured - needed for testing
  @addon_name = ENV['RAILS_AUTOSCALE_ADDON'] || 'RAILS_AUTOSCALE'
  @api_base_url = ENV["#{@addon_name}_URL"]
  @dev_mode = ENV['RAILS_AUTOSCALE_DEV'] == 'true'
  @debug = dev_mode? || ENV['RAILS_AUTOSCALE_DEBUG'] == 'true'
  @track_long_running_jobs = ENV['RAILS_AUTOSCALE_LONG_JOBS'] == 'true'
  @max_request_size = 100_000 # ignore request payloads over 100k since they skew the queue times
  @report_interval = 10 # this default will be overwritten during Reporter#register!
  @logger ||= defined?(Rails) ? Rails.logger : ::Logger.new(STDOUT)
  @dyno = dev_mode? ? 'dev.1' : ENV['DYNO']
end

Public Instance Methods

ignore_large_requests?() click to toggle source
# File lib/rails_autoscale_agent/config.rb, line 37
def ignore_large_requests?
  @max_request_size
end
to_s() click to toggle source
# File lib/rails_autoscale_agent/config.rb, line 33
def to_s
  "#{@dyno}##{Process.pid}"
end

Private Instance Methods

prepare_worker_adapters() click to toggle source
# File lib/rails_autoscale_agent/config.rb, line 47
def prepare_worker_adapters
  adapter_names = (ENV['RAILS_AUTOSCALE_WORKER_ADAPTER'] || DEFAULT_WORKER_ADAPTERS).split(',')
  adapter_names.map do |adapter_name|
    require "rails_autoscale_agent/worker_adapters/#{adapter_name}"
    adapter_constant_name = adapter_name.capitalize.gsub(/(?:_)(.)/i) { $1.upcase }
    WorkerAdapters.const_get(adapter_constant_name).instance
  end
end