Sha256: 6aa32ba5588005fd0c867724573cb1a604fd61858f06245d179645842cfb94f7

Contents?: true

Size: 965 Bytes

Versions: 1

Compression:

Stored size: 965 Bytes

Contents

# frozen_string_literal: true

# This class represents a message. All other objects dela with passing around instances of this class.
# A message must have a subject and a body. The subject represents the handlers name and the body represents
# the payload of the process method in the handler.
# When messages are stored in the queues, they are serialized.
module DispatchRider
  class Message
    include ActiveModel::Validations

    attr_accessor :subject, :body

    validates :subject, :presence => true

    def initialize(options)
      attrs = options.symbolize_keys
      @subject = attrs[:subject]
      @body = attrs[:body] || {}
      raise RecordInvalid.new(self, errors.full_messages) unless valid?
    end

    def attributes
      { subject: subject, body: body }
    end

    def as_json(*)
      attributes
    end

    def ==(other)
      return false unless other.respond_to? :attributes

      attributes == other.attributes
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dispatch-rider-2.2.0 lib/dispatch-rider/message.rb