module Outbox::MessageFields
Public Class Methods
included(base)
click to toggle source
# File lib/outbox/message_fields.rb, line 3 def self.included(base) base.extend Outbox::DefineInheritableMethod base.extend ClassMethods end
Public Instance Methods
[](name)
click to toggle source
Read an arbitrary field.
Example:
message['foo'] = '1234' message['foo'] #=> '1234'
# File lib/outbox/message_fields.rb, line 148 def [](name) @fields[name.to_sym] end
[]=(name, value)
click to toggle source
Add an arbitray field.
Example:
message['foo'] = '1234' message['foo'] #=> '1234'
# File lib/outbox/message_fields.rb, line 158 def []=(name, value) @fields[name.to_sym] = value end
fields(new_fields = nil)
click to toggle source
Returns a hash of the defined fields.
class SomeMessageType < Outbox::Messages::Base fields :to, :from end message = SomeMessageType.new to: 'Bob' message.from 'John' message.fields #=> { to: 'Bob', from: 'John' }
Also allows you to set fields if you pass in a hash.
message.fields to: 'Bob', from: 'Sally' message.fields #=> { to: 'Bob', from: 'Sally' }
# File lib/outbox/message_fields.rb, line 175 def fields(new_fields = nil) if new_fields.nil? fields = {} self.class.fields.each do |field| fields[field] = public_send(field) end fields else self.fields = new_fields end end
fields=(new_fields)
click to toggle source
Assigns the values of the given hash.
message.to = 'Bob' message.fields = { from: 'Sally' } message.fields #=> { to: 'Bob', from: 'Sally' }
# File lib/outbox/message_fields.rb, line 192 def fields=(new_fields) new_fields.each do |field, value| public_send(field, value) if respond_to?(field) end end
validate_fields()
click to toggle source
Checks the current values of the fields and raises errors for any validation issues.
# File lib/outbox/message_fields.rb, line 200 def validate_fields self.class.required_fields.each do |field| value = public_send(field) if value.nil? || value.respond_to?(:empty?) && value.empty? raise Outbox::MissingRequiredFieldError, "Missing required field: #{field}" end end end