lib/event_sourcery/config.rb in event_sourcery-0.14.0 vs lib/event_sourcery/config.rb in event_sourcery-0.15.0
- old
+ new
@@ -1,39 +1,66 @@
require 'logger'
module EventSourcery
class Config
- attr_accessor :on_unknown_event,
- :on_event_processor_error,
- :event_type_serializer,
- :error_handler_class
+ # The default Proc to be run when an aggregate loads an event type that
+ # it doesn't know how to handle.
+ # What's specified here can be overridden when instantiating an aggregate
+ # instance. {AggregateRoot#initialize}
+ #
+ # If no custom Proc is set, by default behaviour is to raise {AggregateRoot::UnknownEventError}
+ #
+ # @return Proc
+ attr_accessor :on_unknown_event
+ # A Proc to be executed on an event processor error.
+ # App specific custom logic can be provided.
+ # i.e. report to an error reporting service like Rollbar.
+ #
+ # @return Proc
+ attr_accessor :on_event_processor_error
+
+ # @return EventStore::EventTypeSerializers::Underscored
+ attr_accessor :event_type_serializer
+
+ # @return EventProcessing::ErrorHandlers::ConstantRetry
+ attr_accessor :error_handler_class
+
attr_writer :logger,
:event_body_serializer,
:event_builder
+ # @api private
def initialize
@on_unknown_event = proc { |event, aggregate|
raise AggregateRoot::UnknownEventError, "#{event.type} is unknown to #{aggregate.class.name}"
}
@on_event_processor_error = proc { |exception, processor_name|
- # app specific custom logic ie. report to rollbar
+ # app specific custom logic ie. report to an error reporting service like Rollbar.
}
@event_store = nil
@event_type_serializer = EventStore::EventTypeSerializers::Underscored.new
@error_handler_class = EventProcessing::ErrorHandlers::ConstantRetry
end
+ # Logger instance used by EventSourcery.
+ # By default EventSourcery will log to STDOUT with a log level of Logger::DEBUG
def logger
@logger ||= ::Logger.new(STDOUT).tap do |logger|
logger.level = Logger::DEBUG
end
end
+ # The event builder used by an event store to build event instances.
+ # By default {EventStore::EventBuilder} will be used.
+ # Provide a custom builder here to change how an event is built.
def event_builder
@event_builder || EventStore::EventBuilder.new(event_type_serializer: @event_type_serializer)
end
+ # The event body serializer used by the default event builder
+ # ({EventStore::EventBuilder}). By default {EventBodySerializer} will be used.
+ # Provide a custom serializer here to change how the event body is serialized.
def event_body_serializer
@event_body_serializer ||= EventBodySerializer.new
.add(Hash, EventBodySerializer::HashSerializer)
.add(Array, EventBodySerializer::ArraySerializer)
.add(Time, &:iso8601)