Module: Neetodeploy::Autoscale

Extended by:
NeetoDeploy::Logger
Defined in:
lib/neetodeploy-autoscale.rb,
lib/neetodeploy/autoscale/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

VERSION =
"2.1.5"

Class Method Summary collapse

Methods included from NeetoDeploy::Logger

logger, logger

Class Method Details

.enable_middleware?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/neetodeploy-autoscale.rb', line 29

def enable_middleware?
  ENV["DISABLE_NEETO_DEPLOY_AUTOSCALE"] != "true" && in_rails_server?
end

.enable_sidekiq_metrics?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/neetodeploy-autoscale.rb', line 33

def enable_sidekiq_metrics?
  ENV["DISABLE_NEETO_DEPLOY_SIDEKIQ_METRICS"] != "true" && defined?(::Sidekiq) && Sidekiq.server?
end

.in_rails_server?Boolean

Returns:

  • (Boolean)


62
63
64
65
66
67
68
# File 'lib/neetodeploy-autoscale.rb', line 62

def in_rails_server?
  # FIX ME: This is a gross way to detect if we're in a Rails server.
  caller_keywords = %w[rails puma unicorn]
  in_console = caller.any? { |call| call.include?("console_command.rb") || call.include?("runner_command.rb") }
  is_rails = caller_keywords.any? { |key| File.basename($0).include?(key) }
  !in_console && is_rails
end

.initialize_middlewaresObject



55
56
57
58
59
60
# File 'lib/neetodeploy-autoscale.rb', line 55

def initialize_middlewares
  return unless ENV["NEETODEPLOY_APP_NAME"].present?

  initialize_rails_middleware
  initialize_sidekiq_metrics
end

.initialize_rails_middlewareObject



37
38
39
40
41
42
43
44
# File 'lib/neetodeploy-autoscale.rb', line 37

def initialize_rails_middleware
  if enable_middleware?
    logger.info("Setting up Neetodeploy rails autoscale middleware")
    setup_rails_middleware
  else
    logger.info("Skipping NeetoDeploy rails autoscale middleware")
  end
end

.initialize_sidekiq_metricsObject



46
47
48
49
50
51
52
53
# File 'lib/neetodeploy-autoscale.rb', line 46

def initialize_sidekiq_metrics
  if enable_sidekiq_metrics?
    logger.info("Setting up Neetodeploy Sidekiq metrics middleware")
    setup_sidekiq_metrics
  else
    logger.info("Skipping NeetoDeploy Sidekiq metrics middleware")
  end
end

.setup_railsObject



17
18
19
# File 'lib/neetodeploy-autoscale.rb', line 17

def setup_rails
  require "neetodeploy/autoscale/rails"
end

.setup_rails_middlewareObject



13
14
15
# File 'lib/neetodeploy-autoscale.rb', line 13

def setup_rails_middleware
  Neetodeploy::Autoscale.setup_rails if defined? Rails
end

.setup_sidekiq_metricsObject



21
22
23
24
25
26
27
# File 'lib/neetodeploy-autoscale.rb', line 21

def setup_sidekiq_metrics
  require "neetodeploy/autoscale/sidekiq"

  ::Sidekiq.configure_server do
    Neetodeploy::Sidekiq::MetricsCollector.start
  end
end