Sha256: b410f66962fb010543173f01cdf645104d59c8b7d9090e32dc6b7c186d2a8ae3

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

require 'jobi/version'
require 'logger'
require 'jobi/utils'
require 'jobi/job'
require 'jobi/configuration'
require 'jobi/config/rabbitmq'
require 'jobi/clients/rabbitmq'
require 'jobi/consumers/rabbitmq'

module Jobi
  class Error < StandardError; end

  class << self
    include Utils

    def configuration
      @configuration ||= Configuration.new
    end

    def configure
      yield(configuration)
      configuration.setup_logger
      start
    end

    def logger
      configuration.logger
    end

    def session
      @session ||= client_class.new(configuration.send(client_config_method))
    end

    def client_class_name
      configuration.client.capitalize
    end

    def consumer?
      configuration.act_as_consumer
    end

    def publisher?
      configuration.act_as_publisher
    end

    private

    def client_config_method
      "#{client_class_name.downcase}_config"
    end

    def client_class
      constantize("Jobi::Clients::#{client_class_name}")
    end

    def start
      return unless consumer?

      configuration.jobs.each do |job_klass|
        constantize(job_klass).consume_messages
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jobi-0.2.1 lib/jobi.rb
jobi-0.1.1 lib/jobi.rb