Sha256: 6e2895fbc57351197e5d02e117e846ee2027f4c38a912eac139dd5ff7a7c6478

Contents?: true

Size: 829 Bytes

Versions: 1

Compression:

Stored size: 829 Bytes

Contents

# frozen_string_literal: true

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

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

    private

    def start_listeners
      @connector = PubSubModelSync::Connector.new
      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

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pub_sub_model_sync-0.1.0 lib/pub_sub_model_sync/runner.rb