Class: RooOnRails::Railties::SidekiqIntegration

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/roo_on_rails/railties/sidekiq_integration.rb

Instance Method Summary collapse

Instance Method Details

#add_middleware(app) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/roo_on_rails/railties/sidekiq_integration.rb', line 54

def add_middleware(app)
  $stderr.puts 'HIREFIRE_TOKEN set'
  app.middleware.use HireFire::Middleware
  HireFire::Resource.configure do |config|
    config.dyno(:worker) do
      RooOnRails::Sidekiq::SlaMetric.queue
    end
  end
end

#config_hirefire(app) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/roo_on_rails/railties/sidekiq_integration.rb', line 24

def config_hirefire(app)
  unless ENV['HIREFIRE_TOKEN']
    Rails.logger.warn 'No HIREFIRE_TOKEN token set, auto scaling not enabled'
    return
  end
  add_middleware(app)
end

#config_sidekiqObject



32
33
34
35
36
37
# File 'lib/roo_on_rails/railties/sidekiq_integration.rb', line 32

def config_sidekiq
  ::Sidekiq.configure_server do |x|
    x.options[:concurrency] = RooOnRails::Sidekiq::Settings.concurrency.to_i
    x.options[:queues] = RooOnRails::Sidekiq::Settings.queues
  end
end

#config_sidekiq_metricsObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/roo_on_rails/railties/sidekiq_integration.rb', line 39

def config_sidekiq_metrics
  # https://github.com/mperham/sidekiq/wiki/Pro-Metrics
  require 'sidekiq-pro'
  ::Sidekiq::Pro.dogstatsd = -> { RooOnRails.statsd }

  ::Sidekiq.configure_server do |config|
    config.server_middleware do |chain|
      require 'sidekiq/middleware/server/statsd'
      chain.add ::Sidekiq::Middleware::Server::Statsd
    end
  end
rescue LoadError
  Rails.logger.warn 'Sidekiq metrics unavailable without Sidekiq Pro'
end