class PubSubModelSync::Runner

Attributes

connector[RW]

Public Class Methods

new() click to toggle source
# File lib/pub_sub_model_sync/runner.rb, line 9
def initialize
  @connector = PubSubModelSync::Connector.new
end
preload_listeners() click to toggle source
# File lib/pub_sub_model_sync/runner.rb, line 20
def self.preload_listeners
  Rails.application.try(:eager_load!) if defined?(Rails)
  Zeitwerk::Loader.eager_load_all if defined?(Zeitwerk::Loader)
end

Public Instance Methods

run() click to toggle source
# File lib/pub_sub_model_sync/runner.rb, line 13
def run
  at_exit { connector.stop }
  trap_signals!
  preload_listeners
  start_listeners
end

Private Instance Methods

start_listeners() click to toggle source
# File lib/pub_sub_model_sync/runner.rb, line 27
def start_listeners
  connector.listen_messages
end
trap_signals!() click to toggle source
# File lib/pub_sub_model_sync/runner.rb, line 31
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