event_sourcery 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/README.md +3 -1
  4. data/lib/event_sourcery/aggregate_root.rb +80 -1
  5. data/lib/event_sourcery/config.rb +32 -5
  6. data/lib/event_sourcery/errors.rb +8 -3
  7. data/lib/event_sourcery/event.rb +61 -0
  8. data/lib/event_sourcery/event_body_serializer.rb +16 -0
  9. data/lib/event_sourcery/event_processing/error_handlers/constant_retry.rb +9 -2
  10. data/lib/event_sourcery/event_processing/error_handlers/error_handler.rb +4 -1
  11. data/lib/event_sourcery/event_processing/error_handlers/exponential_backoff_retry.rb +15 -6
  12. data/lib/event_sourcery/event_processing/error_handlers/no_retry.rb +1 -0
  13. data/lib/event_sourcery/event_processing/esp_process.rb +6 -1
  14. data/lib/event_sourcery/event_processing/esp_runner.rb +2 -0
  15. data/lib/event_sourcery/event_processing/event_stream_processor.rb +42 -1
  16. data/lib/event_sourcery/event_processing/event_stream_processor_registry.rb +16 -0
  17. data/lib/event_sourcery/event_store/poll_waiter.rb +10 -0
  18. data/lib/event_sourcery/event_store/signal_handling_subscription_master.rb +7 -0
  19. data/lib/event_sourcery/event_store/subscription.rb +15 -0
  20. data/lib/event_sourcery/memory/config.rb +36 -0
  21. data/lib/event_sourcery/memory/event_store.rb +59 -0
  22. data/lib/event_sourcery/memory/projector.rb +25 -0
  23. data/lib/event_sourcery/memory/tracker.rb +19 -0
  24. data/lib/event_sourcery/repository.rb +28 -0
  25. data/lib/event_sourcery/rspec/event_store_shared_examples.rb +59 -74
  26. data/lib/event_sourcery/version.rb +2 -1
  27. data/lib/event_sourcery.rb +28 -0
  28. metadata +5 -3
@@ -1,3 +1,4 @@
1
1
  module EventSourcery
2
- VERSION = '0.14.0'.freeze
2
+ # Defines the version
3
+ VERSION = '0.15.0'.freeze
3
4
  end
@@ -29,8 +29,30 @@ require 'event_sourcery/aggregate_root'
29
29
  require 'event_sourcery/repository'
30
30
  require 'event_sourcery/memory/tracker'
31
31
  require 'event_sourcery/memory/event_store'
32
+ require 'event_sourcery/memory/config'
33
+ require 'event_sourcery/memory/projector'
32
34
 
33
35
  module EventSourcery
36
+ # Configure EventSourcery
37
+ #
38
+ # @example
39
+ # EventSourcery.configure do |config|
40
+ # # Add custom reporting of errors occurring during event processing.
41
+ # # One might set up an error reporting service like Rollbar here.
42
+ # config.on_event_processor_error = proc { |exception, processor_name| … }
43
+ #
44
+ # # Enable Event Sourcery logging.
45
+ # config.logger = Logger.new('logs/my_event_sourcery_app.log')
46
+ #
47
+ # # Customize how event body attributes are serialized
48
+ # config.event_body_serializer
49
+ # .add(BigDecimal) { |decimal| decimal.to_s('F') }
50
+ #
51
+ # # Config how you want to handle event processing errors
52
+ # config.error_handler_class = EventSourcery::EventProcessing::ErrorHandlers::ExponentialBackoffRetry
53
+ # end
54
+ #
55
+ # @see Config
34
56
  def self.configure
35
57
  yield config
36
58
  end
@@ -39,10 +61,16 @@ module EventSourcery
39
61
  @config ||= Config.new
40
62
  end
41
63
 
64
+ # Logger object used by EventSourcery. Set via `configure`.
65
+ #
66
+ # @see Config.logger
42
67
  def self.logger
43
68
  config.logger
44
69
  end
45
70
 
71
+ # Registry of all Event Stream Processors
72
+ #
73
+ # @return EventProcessing::EventStreamProcessorRegistry
46
74
  def self.event_stream_processor_registry
47
75
  @event_stream_processor_registry ||= EventProcessing::EventStreamProcessorRegistry.new
48
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_sourcery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Envato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-21 00:00:00.000000000 Z
11
+ date: 2017-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -116,7 +116,9 @@ files:
116
116
  - lib/event_sourcery/event_store/poll_waiter.rb
117
117
  - lib/event_sourcery/event_store/signal_handling_subscription_master.rb
118
118
  - lib/event_sourcery/event_store/subscription.rb
119
+ - lib/event_sourcery/memory/config.rb
119
120
  - lib/event_sourcery/memory/event_store.rb
121
+ - lib/event_sourcery/memory/projector.rb
120
122
  - lib/event_sourcery/memory/tracker.rb
121
123
  - lib/event_sourcery/repository.rb
122
124
  - lib/event_sourcery/rspec/event_store_shared_examples.rb
@@ -140,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
142
  version: '0'
141
143
  requirements: []
142
144
  rubyforge_project:
143
- rubygems_version: 2.6.11
145
+ rubygems_version: 2.6.8
144
146
  signing_key:
145
147
  specification_version: 4
146
148
  summary: Event Sourcing Library