Sha256: 91c4450166841652a38207fc009c577a029b02f70fa4f703b09b253388713e56

Contents?: true

Size: 904 Bytes

Versions: 13

Compression:

Stored size: 904 Bytes

Contents

# frozen_string_literal: true

require 'active_support/core_ext/module'
module PubSubModelSync
  class Runner
    class ShutDown < StandardError; end
    delegate :preload_listeners, to: :class
    attr_accessor :connector

    def initialize
      @connector = PubSubModelSync::Connector.new
    end

    def run
      trap_signals!
      preload_listeners
      start_listeners
    rescue ShutDown
      connector.stop
    end

    def self.preload_listeners
      Rails.application.try(:eager_load!) if defined?(Rails)
      Zeitwerk::Loader.eager_load_all if defined?(Zeitwerk::Loader)
    end

    private

    def start_listeners
      connector.listen_messages
    end

    def trap_signals!
      handler = proc do |signal|
        puts "received #{Signal.signame(signal)}"
        raise ShutDown
      end
      %w[INT QUIT TERM].each { |signal| Signal.trap(signal, handler) }
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
pub_sub_model_sync-1.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.0.beta2 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.0.beta1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.0.beta lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.6.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.10 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.9.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.9 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.8.2 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.8.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.8 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.7.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-0.5.7 lib/pub_sub_model_sync/runner.rb