Sha256: c8937fdf9e585d6a4f95191f00becadc564a93bc6c1fdc6eda057b9e362fe1e5

Contents?: true

Size: 816 Bytes

Versions: 4

Compression:

Stored size: 816 Bytes

Contents

module Railjet
  module Publisher
    def self.included(klass)
      raise "Railjet::Bus adapter must be specified" unless Railjet::Bus.adapter

      klass.__send__(:include, Railjet::Bus.publisher)
      klass.__send__(:include, CustomSubscription)
    end

    module CustomSubscription
      def subscribe(event, subscriber)
        super(subscriber, on: event, prefix: true)
      end
    end
  end

  class Bus
    class << self
      attr_accessor :adapter
      delegate :publisher, to: :adapter
    end

    def initialize(adapter: self.class.adapter)
      @bus = adapter or raise ArgumentError, "Railjet::Bus adapter must be specified"
    end

    def subscribe(event, subscriber)
      bus.subscribe(subscriber, on: event, prefix: true, async: true)
    end

    private

    attr_reader :bus
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
railjet-bus-1.0 lib/railjet/bus.rb
railjet-bus-1.0.pre2 lib/railjet/bus.rb
railjet-bus-1.0.pre1 lib/railjet/bus.rb
railjet-bus-1.0.pre lib/railjet/bus.rb