Class: HerokuVector::Source::Sidekiq

Inherits:
Object
  • Object
show all
Defined in:
lib/heroku_vector/source/sidekiq.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Sidekiq

Returns a new instance of Sidekiq.



8
9
10
# File 'lib/heroku_vector/source/sidekiq.rb', line 8

def initialize(options={})
  configure_sidekiq_client(options)
end

Instance Method Details

#build_redis_client(options = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/heroku_vector/source/sidekiq.rb', line 19

def build_redis_client(options={})
  return options[:redis] if options[:redis]

  connection = Redis.new({
    url: options[:redis_url] || HerokuVector.sidekiq_redis_url,
    timeout: 60
  })

  namespace = options[:redis_namespace] || HerokuVector.sidekiq_redis_namespace
  if namespace
    return ::Redis::Namespace.new(namespace, redis: connection)
  else
    return connection
  end
end

#busy_workersObject Also known as: sample



39
40
41
# File 'lib/heroku_vector/source/sidekiq.rb', line 39

def busy_workers
  sidekiq_processes.reduce(0) {|i, process| i + process['busy'].to_i }
end

#configure_sidekiq_client(options = {}) ⇒ Object



12
13
14
15
16
17
# File 'lib/heroku_vector/source/sidekiq.rb', line 12

def configure_sidekiq_client(options={})
  ::Sidekiq.configure_client do |config|
    pool_options = { :size => 3, :timeout => 10 }
    config.redis = ConnectionPool.new(pool_options) { build_redis_client(options) }
  end
end

#sidekiq_processesObject



35
36
37
# File 'lib/heroku_vector/source/sidekiq.rb', line 35

def sidekiq_processes
  ::Sidekiq::ProcessSet.new
end

#unitObject



44
45
46
# File 'lib/heroku_vector/source/sidekiq.rb', line 44

def unit
  'busy threads'
end