Sha256: 3b22d259b162f6e1bea69c860df597e803ce629511a480fc27173a08002b0994

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require "sneakers"
require "lamian"
require "sneakers/runner"

require "rabbit/extensions/bunny/channel"
require "rabbit/receiving/worker"

module Rabbit
  module Daemon
    extend self

    def run
      Sneakers.configure(
        connection: connection,
        env: Rails.env,
        exchange_type: :direct,
        exchange: Rabbit.config.app_name,
        hooks: Rabbit.config.hooks,
        supervisor: true,
        daemonize: false,
        exit_on_detach: true,
        **config,
      )

      unless Sneakers.logger
        Sneakers.logger = Logger.new(Rails.root.join("log", "sneakers.log"))
        Sneakers.logger.level = Logger::DEBUG
        Lamian.extend_logger(Sneakers.logger)
      end

      Sneakers.server = true

      Rabbit.config.validate!
      Receiving::Worker.from_queue(Rabbit.config.read_queue)

      Sneakers::Runner.new([Receiving::Worker]).run
    end

    def config
      Rails.application.config_for("sneakers").symbolize_keys
    end

    def connection
      bunny_config = config.delete(:bunny_options).to_h.symbolize_keys
      Bunny.new(bunny_config)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rabbit_messaging-0.11.0 lib/rabbit/daemon.rb
rabbit_messaging-0.10.0 lib/rabbit/daemon.rb
rabbit_messaging-0.9.0 lib/rabbit/daemon.rb
rabbit_messaging-0.8.1 lib/rabbit/daemon.rb