Sha256: cb34c8d384a37967573c6c90b0b6c8b1e2b440580c02d58b3bcf3b13041c4e1b

Contents?: true

Size: 1.79 KB

Versions: 13

Compression:

Stored size: 1.79 KB

Contents

require 'sidekiq'
require 'roo_on_rails/config'
require 'roo_on_rails/statsd'
require 'roo_on_rails/sidekiq/settings'
require 'roo_on_rails/sidekiq/sla_metric'

module RooOnRails
  module Railties
    class Sidekiq < Rails::Railtie
      initializer 'roo_on_rails.sidekiq' do |app|
        Rails.logger.with initializer: 'roo_on_rails.sidekiq' do |log|
          
          unless RooOnRails::Config.sidekiq_enabled?
            log.debug 'skipping'
            next
          end

          log.debug 'loading'
          require 'hirefire-resource'
         
          config_sidekiq
          config_sidekiq_metrics
          config_hirefire(app)
        end
      end

      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

      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

      def config_sidekiq_metrics
        require 'sidekiq/middleware/server/statsd'

        ::Sidekiq.configure_server do |x|
          x.server_middleware do |chain|
            chain.add ::Sidekiq::Middleware::Server::Statsd, client: RooOnRails.statsd
          end
        end
      rescue LoadError
        Rails.logger.warn 'Sidekiq metrics unavailable without Sidekiq Pro'
      end

      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
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
roo_on_rails-1.20.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.19.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.18.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.17.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.16.2 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.16.1 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.16.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.15.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.14.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.13.1 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.13.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.12.0 lib/roo_on_rails/railties/sidekiq.rb
roo_on_rails-1.11.1 lib/roo_on_rails/railties/sidekiq.rb