Sha256: c61554f270f0e0ca49623fca391846b9f6a073cdb57592b022c0a57ea67917f5

Contents?: true

Size: 859 Bytes

Versions: 23

Compression:

Stored size: 859 Bytes

Contents

# frozen_string_literal: true

require 'active_support/core_ext/module'
module PubSubModelSync
  class Runner
    delegate :preload_listeners, to: :class
    attr_accessor :connector

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

    def run
      at_exit { connector.stop }
      trap_signals!
      preload_listeners
      start_listeners
    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 "PS_MSYNC ==> received #{Signal.signame(signal)}"
        exit
      end
      %w[INT QUIT TERM].each { |signal| Signal.trap(signal, handler) }
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
pub_sub_model_sync-1.9.3 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.9.2 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.9.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.9.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.7.2 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.7.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.7.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.4 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.3 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.2 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.1pre lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.6.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.5.1pre lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.5.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.4.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.3.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.3.0 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.2.1 lib/pub_sub_model_sync/runner.rb
pub_sub_model_sync-1.2.0 lib/pub_sub_model_sync/runner.rb