class Berkshelf::API::CacheBuilder

Public Class Methods

new() click to toggle source
# File lib/berkshelf/api/cache_builder.rb, line 14
def initialize
  log.info "Cache Builder starting..."
  @worker_registry   = Celluloid::Registry.new
  @worker_supervisor = WorkerSupervisor.new(@worker_registry)
  @building          = false
  @build_interval   = Application.config.build_interval

  Application.config.endpoints.each_with_index do |endpoint, index|
    endpoint_options = (endpoint.options || {}).to_hash.deep_symbolize_keys
    @worker_supervisor.supervise(CacheBuilder::Worker[endpoint.type], endpoint_options.merge(priority: index))
  end
end

Public Instance Methods

build() click to toggle source
# File lib/berkshelf/api/cache_builder.rb, line 27
def build
  cache_manager.process_workers(workers)
end
build_loop(interval = @build_interval) click to toggle source

Issue a build command to all workers at the scheduled interval

@param [Fixnum, Float] interval

# File lib/berkshelf/api/cache_builder.rb, line 34
def build_loop(interval = @build_interval)
  return if @building

  loop do
    @building = true
    build
    sleep interval
  end
end
workers() click to toggle source

Return the list of running workers

@return [Array<CacheBuilder::Worker::Base>]

# File lib/berkshelf/api/cache_builder.rb, line 47
def workers
  @worker_supervisor.actors
end

Private Instance Methods

finalize_callback() click to toggle source
# File lib/berkshelf/api/cache_builder.rb, line 53
def finalize_callback
  log.info "Cache Builder shutting down..."
  @worker_supervisor.terminate if @worker_supervisor && @worker_supervisor.alive?
end