ruby_event_store 2.19.1 → 2.19.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce9224b921ed7a88f7c7d6b35875ae497d0980b63b2088877d34a830678d812e
4
- data.tar.gz: 26dfca582631ed9e9e91d1ff35857052bb52de9cbff9ebdf3f27022a67ebb24a
3
+ metadata.gz: a38be596490cc7feffdf26968a8175a2a1606ba567f448382b2aecfe2e78ebd9
4
+ data.tar.gz: c64882bef174236d979680f84ed1d16b37f8ef2ba2a48b50a49d55286cff523e
5
5
  SHA512:
6
- metadata.gz: 55c6aa28f09507bee217fd58e979dab0e3962343fafb6b72ccf579c0fe1c4f4e828f6cff0aeb4ee89e94f4a6ffedf9069a14a267fe45c9cc021495d87f3cb10d
7
- data.tar.gz: d60413a68772516d46b8c9ab7812dc6572d7da1b8b706d339a6a864290914048c3a78b0c6386ae5abe9bff947a0a11f6dae903e91a4d1226de06038741ca7cd9
6
+ metadata.gz: 07a6509f6ac818e525834d0bae05b297ef2802643fee60cc45024cf3ea2faf49744f26dfe31896be18274dfc83e4a6be62abef1cb6faa27c67b8de8664998d11
7
+ data.tar.gz: f4846eedf860127e23bcdc38c37b13028896b39836a3af75689943de59bbdf633d7b2dd0e30cade9728486710cc2395db99ec4adef98a60fcfbdb4c494724e3f
@@ -25,7 +25,7 @@ module RubyEventStore
25
25
  @event_type_resolver = event_type_resolver
26
26
 
27
27
  if (subscriptions || dispatcher)
28
- warn <<~EOW
28
+ msg = <<~EOW
29
29
  Passing subscriptions and dispatcher to #{self.class} has been deprecated.
30
30
 
31
31
  Pass it using message_broker argument. For example:
@@ -37,11 +37,12 @@ module RubyEventStore
37
37
  )
38
38
  )
39
39
  EOW
40
- warn <<~EOW if (message_broker)
40
+ msg += <<~EOW if message_broker
41
41
 
42
- Because message_broker has been provided,
43
- arguments passed by subscriptions or dispatcher will be ignored.
44
- EOW
42
+ Because message_broker has been provided,
43
+ arguments passed by subscriptions or dispatcher will be ignored.
44
+ EOW
45
+ Deprecations.warn(:ruby_client_subscriptions_dispatcher, message: msg)
45
46
  end
46
47
  end
47
48
 
@@ -98,11 +99,9 @@ module RubyEventStore
98
99
  # @param expected_version (see #publish)
99
100
  # @return [self]
100
101
  def link(event_ids, stream_name:, expected_version: :any)
101
- if event_ids.nil? || Array(event_ids).any?(&:nil?)
102
- warn <<~EOW
102
+ warn <<~EOW if event_ids.nil? || Array(event_ids).any?(&:nil?)
103
103
  Passing `nil` to link is deprecated and will raise ArgumentError in RubyEventStore 3.0.
104
104
  EOW
105
- end
106
105
  @repository.link_to_stream(Array(event_ids), Stream.new(stream_name), ExpectedVersion.new(expected_version))
107
106
  self
108
107
  end
@@ -385,11 +384,9 @@ module RubyEventStore
385
384
  end
386
385
 
387
386
  def enrich_events_metadata(events)
388
- if events.nil? || Array(events).any?(&:nil?)
389
- warn <<~EOW
387
+ warn <<~EOW if events.nil? || Array(events).any?(&:nil?)
390
388
  Passing `nil` to publish/append is deprecated and will raise ArgumentError in RubyEventStore 3.0.
391
389
  EOW
392
- end
393
390
  events = Array(events)
394
391
  events.each { |event| enrich_event_metadata(event) }
395
392
  end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyEventStore
4
+ Deprecations.register(
5
+ :dispatcher_renamed,
6
+ "`RubyEventStore::Dispatcher` is deprecated and will be removed in the next major release.\n" \
7
+ "Use `RubyEventStore::SyncScheduler` instead.",
8
+ )
9
+ Deprecations.deprecate(Dispatcher, :initialize, key: :dispatcher_renamed)
10
+
11
+ Deprecations.register(
12
+ :immediate_async_dispatcher_renamed,
13
+ "`RubyEventStore::ImmediateAsyncDispatcher` is deprecated and will be removed in the next major release.\n" \
14
+ "Use `RubyEventStore::ImmediateDispatcher` instead.",
15
+ )
16
+ Deprecations.deprecate(ImmediateAsyncDispatcher, :initialize, key: :immediate_async_dispatcher_renamed)
17
+
18
+ Deprecations.register(
19
+ :class_subscriber,
20
+ "Passing a class as a subscriber is deprecated and will be removed in the next major release.\n" \
21
+ "Pass an instance or lambda instead, e.g. subscribe(MyHandler.new, to: [MyEvent]).",
22
+ )
23
+
24
+ Deprecations.register(
25
+ :null_mapper,
26
+ "`RubyEventStore::Mappers::NullMapper` is deprecated and will be removed in the next major release.\n" \
27
+ "Use `RubyEventStore::Mappers::Default.new` instead.",
28
+ )
29
+ Deprecations.deprecate(Mappers::NullMapper, :initialize, key: :null_mapper)
30
+
31
+ Deprecations.register(
32
+ :events_class_remapping_option,
33
+ "`events_class_remapping` option in `RubyEventStore::Mappers::Default` is deprecated and will be removed in the next major release.\n" \
34
+ "Use `RubyEventStore::Mappers::Transformation::Upcast` instead.",
35
+ )
36
+
37
+ Deprecations.register(
38
+ :event_class_remapper,
39
+ "`RubyEventStore::Mappers::Transformation::EventClassRemapper` is deprecated and will be removed in the next major release.\n" \
40
+ "Use `RubyEventStore::Mappers::Transformation::Upcast` instead.",
41
+ )
42
+ Deprecations.deprecate(Mappers::Transformation::EventClassRemapper, :initialize, key: :event_class_remapper)
43
+
44
+ Deprecations.register(
45
+ :any_version_with_specific_position,
46
+ "Mixing expected version :any and specific position (or :auto) is deprecated and will raise UnsupportedVersionAnyUsage in RubyEventStore 3.0.",
47
+ )
48
+
49
+ Deprecations.register(
50
+ :projection_new_constructor,
51
+ "RubyEventStore::Projection.new is deprecated and will be removed in the next major release.\n" \
52
+ "Use Projection.init(initial_state) instead.",
53
+ )
54
+
55
+ Deprecations.register(
56
+ :projection_multiple_scopes,
57
+ "Passing multiple scopes to RubyEventStore::Projection#call is deprecated and will be removed in the next major release.\n" \
58
+ "Use a single scope instead, e.g. call(event_store.read.stream(\"stream_name\")).",
59
+ )
60
+
61
+ Deprecations.register(
62
+ :projection_old_api,
63
+ "RubyEventStore::Projection from_stream/from_all_streams/init/when/run API is deprecated and will be removed in the next major release.\n" \
64
+ "Use Projection.init(initial_state).on(EventClass) { |state, event| new_state }.call(scope) instead.",
65
+ )
66
+ Deprecations.deprecate_class_method(Projection, :from_stream, key: :projection_old_api)
67
+ Deprecations.deprecate_class_method(Projection, :from_all_streams, key: :projection_old_api)
68
+ Deprecations.deprecate(Projection, :init, key: :projection_old_api)
69
+ Deprecations.deprecate(Projection, :when, key: :projection_old_api)
70
+ Deprecations.deprecate(Projection, :run, key: :projection_old_api)
71
+
72
+ Deprecations.register(
73
+ :instrumentation_renamed,
74
+ "Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.\n" \
75
+ "Use *.ruby_event_store instead.",
76
+ )
77
+
78
+ Deprecations.register(
79
+ :instrumented_mapper_serialize_deprecated,
80
+ "Instrumentation event names serialize.mapper.ruby_event_store and deserialize.mapper.ruby_event_store are deprecated and will be removed in the next major release.\n" \
81
+ "Use event_to_record.mapper.ruby_event_store and record_to_event.mapper.ruby_event_store instead.\n" \
82
+ "The domain_event: payload key in serialize.mapper.ruby_event_store has been renamed to event: in event_to_record.mapper.ruby_event_store.",
83
+ )
84
+
85
+ Deprecations.register(
86
+ :specification_in_batches_of,
87
+ "RubyEventStore::Specification#in_batches_of is deprecated and will be removed in the next major release.\n\n" \
88
+ "Use #in_batches instead.",
89
+ )
90
+ Deprecations.deprecate(Specification, :in_batches_of, key: :specification_in_batches_of)
91
+
92
+ Deprecations.register(
93
+ :specification_of_types,
94
+ "RubyEventStore::Specification#of_types is deprecated and will be removed in the next major release.\n\n" \
95
+ "Use #of_type instead.",
96
+ )
97
+ Deprecations.deprecate(Specification, :of_types, key: :specification_of_types)
98
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "set"
4
+
5
+ module RubyEventStore
6
+ module Deprecations
7
+ @suppressions = Set.new
8
+ @warnings = {}
9
+ @emitted = Set.new
10
+
11
+ class << self
12
+ def register(key, message)
13
+ @warnings[key] = message
14
+ end
15
+
16
+ def suppress(key)
17
+ @suppressions << key
18
+ end
19
+
20
+ def warn(key, message: nil)
21
+ return if @suppressions.include?(key)
22
+ return if @emitted.include?(key)
23
+ @emitted << key
24
+ Kernel.warn(
25
+ "[DEPRECATION] #{message || @warnings.fetch(key) { raise KeyError, "Deprecation :#{key} not registered. Call Deprecations.register first." }}",
26
+ )
27
+ end
28
+
29
+ def deprecate(klass, method_name, key:)
30
+ warn_key = key
31
+ is_private = klass.private_method_defined?(method_name)
32
+ this = self
33
+ wrapper =
34
+ Module.new do
35
+ define_method(method_name) do |*args, **kwargs, &block|
36
+ this.warn(warn_key)
37
+ super(*args, **kwargs, &block)
38
+ end
39
+ private(method_name) if is_private
40
+ end
41
+ klass.prepend(wrapper)
42
+ end
43
+
44
+ def deprecate_class_method(klass, method_name, key:)
45
+ warn_key = key
46
+ this = self
47
+ wrapper =
48
+ Module.new do
49
+ define_method(method_name) do |*args, **kwargs, &block|
50
+ this.warn(warn_key)
51
+ super(*args, **kwargs, &block)
52
+ end
53
+ end
54
+ klass.singleton_class.prepend(wrapper)
55
+ end
56
+
57
+ def reset!
58
+ @suppressions = Set.new
59
+ @emitted = Set.new
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,11 +2,5 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class Dispatcher < SyncScheduler
5
- def initialize
6
- warn <<~EOW
7
- DEPRECATION WARNING: `RubyEventStore::Dispatcher` is deprecated and will be removed in the next major release.
8
- Use `RubyEventStore::SyncScheduler` instead.
9
- EOW
10
- end
11
5
  end
12
6
  end
@@ -2,12 +2,5 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class ImmediateAsyncDispatcher < ImmediateDispatcher
5
- def initialize(scheduler:)
6
- warn <<~EOW
7
- DEPRECATION WARNING: `RubyEventStore::ImmediateAsyncDispatcher` is deprecated and will be removed in the next major release.
8
- Use `RubyEventStore::ImmediateDispatcher` instead.
9
- EOW
10
- super
11
- end
12
5
  end
13
6
  end
@@ -237,15 +237,13 @@ module RubyEventStore
237
237
  stream_positions = streams.fetch(stream.name, Array.new).map(&:position)
238
238
  violation =
239
239
  (resolved_version.nil? && !stream_positions.compact.empty?) ||
240
- (!resolved_version.nil? && stream_positions.include?(nil))
240
+ (!resolved_version.nil? && stream_positions.include?(nil))
241
241
 
242
242
  if violation
243
243
  if @ensure_supported_any_usage
244
244
  raise UnsupportedVersionAnyUsage
245
245
  else
246
- warn <<~EOW
247
- Mixing expected version :any and specific position (or :auto) is deprecated and will raise UnsupportedVersionAnyUsage in RubyEventStore 3.0.
248
- EOW
246
+ Deprecations.warn(:any_version_with_specific_position)
249
247
  end
250
248
  end
251
249
  end
@@ -2,12 +2,6 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class InstrumentedBroker
5
- DEPRECATION_MESSAGE = <<~EOW
6
- Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.
7
- Use *.ruby_event_store instead.
8
- EOW
9
- private_constant :DEPRECATION_MESSAGE
10
-
11
5
  def initialize(broker, instrumentation)
12
6
  @broker = broker
13
7
  @instrumentation = instrumentation
@@ -52,9 +46,11 @@ module RubyEventStore
52
46
  subscriber: subscriber,
53
47
  topics: topics,
54
48
  ) do
55
- deprecated_instrument("add_thread_subscription.broker.rails_event_store", subscriber: subscriber, topics: topics) do
56
- broker.add_thread_subscription(subscriber, topics)
57
- end
49
+ deprecated_instrument(
50
+ "add_thread_subscription.broker.rails_event_store",
51
+ subscriber: subscriber,
52
+ topics: topics,
53
+ ) { broker.add_thread_subscription(subscriber, topics) }
58
54
  end
59
55
  end
60
56
 
@@ -95,7 +91,7 @@ module RubyEventStore
95
91
  old_listeners = instrumentation.notifier.all_listeners_for(name)
96
92
  new_listeners = instrumentation.notifier.all_listeners_for(canonical_name)
97
93
  if (old_listeners - new_listeners).any?
98
- warn DEPRECATION_MESSAGE
94
+ Deprecations.warn(:instrumentation_renamed)
99
95
  instrumentation.instrument(name, payload, &block)
100
96
  else
101
97
  yield
@@ -2,12 +2,6 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class InstrumentedDispatcher
5
- DEPRECATION_MESSAGE = <<~EOW
6
- Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.
7
- Use *.ruby_event_store instead.
8
- EOW
9
- private_constant :DEPRECATION_MESSAGE
10
-
11
5
  def initialize(dispatcher, instrumentation)
12
6
  @dispatcher = dispatcher
13
7
  @instrumentation = instrumentation
@@ -42,7 +36,7 @@ module RubyEventStore
42
36
  old_listeners = instrumentation.notifier.all_listeners_for(name)
43
37
  new_listeners = instrumentation.notifier.all_listeners_for(canonical_name)
44
38
  if (old_listeners - new_listeners).any?
45
- warn DEPRECATION_MESSAGE
39
+ Deprecations.warn(:instrumentation_renamed)
46
40
  instrumentation.instrument(name, payload, &block)
47
41
  else
48
42
  yield
@@ -2,22 +2,22 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class InstrumentedRepository
5
- DEPRECATION_MESSAGE = <<~EOW
6
- Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.
7
- Use *.ruby_event_store instead.
8
- EOW
9
- private_constant :DEPRECATION_MESSAGE
10
-
11
5
  def initialize(repository, instrumentation)
12
6
  @repository = repository
13
7
  @instrumentation = instrumentation
14
8
  end
15
9
 
16
10
  def append_to_stream(records, stream, expected_version)
17
- instrumentation.instrument("append_to_stream.repository.ruby_event_store", records: records, events: records, stream: stream) do
18
- deprecated_instrument("append_to_stream.repository.rails_event_store", { records: records, events: records, stream: stream }) do
19
- repository.append_to_stream(records, stream, expected_version)
20
- end
11
+ instrumentation.instrument(
12
+ "append_to_stream.repository.ruby_event_store",
13
+ records: records,
14
+ events: records,
15
+ stream: stream,
16
+ ) do
17
+ deprecated_instrument(
18
+ "append_to_stream.repository.rails_event_store",
19
+ { records: records, events: records, stream: stream },
20
+ ) { repository.append_to_stream(records, stream, expected_version) }
21
21
  end
22
22
  end
23
23
 
@@ -55,9 +55,10 @@ module RubyEventStore
55
55
 
56
56
  def update_messages(records)
57
57
  instrumentation.instrument("update_messages.repository.ruby_event_store", records: records, messages: records) do
58
- deprecated_instrument("update_messages.repository.rails_event_store", { records: records, messages: records }) do
59
- repository.update_messages(records)
60
- end
58
+ deprecated_instrument(
59
+ "update_messages.repository.rails_event_store",
60
+ { records: records, messages: records },
61
+ ) { repository.update_messages(records) }
61
62
  end
62
63
  end
63
64
 
@@ -90,7 +91,7 @@ module RubyEventStore
90
91
  old_listeners = instrumentation.notifier.all_listeners_for(name)
91
92
  new_listeners = instrumentation.notifier.all_listeners_for(canonical_name)
92
93
  if (old_listeners - new_listeners).any?
93
- warn DEPRECATION_MESSAGE
94
+ Deprecations.warn(:instrumentation_renamed)
94
95
  instrumentation.instrument(name, payload, &block)
95
96
  else
96
97
  yield
@@ -5,10 +5,7 @@ module RubyEventStore
5
5
  class Default < PipelineMapper
6
6
  def initialize(events_class_remapping: {})
7
7
  if events_class_remapping.any?
8
- warn <<~EOW
9
- DEPRECATION WARNING: `events_class_remapping` option in `RubyEventStore::Mappers::Default` is deprecated and will be removed in the next major release.
10
- Use `RubyEventStore::Mappers::Transformation::Upcast` instead.
11
- EOW
8
+ Deprecations.warn(:events_class_remapping_option)
12
9
  super(
13
10
  Pipeline.new(
14
11
  Transformation::EventClassRemapper.new(events_class_remapping),
@@ -3,12 +3,6 @@
3
3
  module RubyEventStore
4
4
  module Mappers
5
5
  class InstrumentedBatchMapper
6
- DEPRECATION_MESSAGE = <<~EOW
7
- Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.
8
- Use *.ruby_event_store instead.
9
- EOW
10
- private_constant :DEPRECATION_MESSAGE
11
-
12
6
  def initialize(mapper, instrumentation)
13
7
  @mapper = mapper
14
8
  @instrumentation = instrumentation
@@ -39,7 +33,7 @@ module RubyEventStore
39
33
  old_listeners = instrumentation.notifier.all_listeners_for(name)
40
34
  new_listeners = instrumentation.notifier.all_listeners_for(canonical_name)
41
35
  if (old_listeners - new_listeners).any?
42
- warn DEPRECATION_MESSAGE
36
+ Deprecations.warn(:instrumentation_renamed)
43
37
  instrumentation.instrument(name, payload, &block)
44
38
  else
45
39
  yield
@@ -3,19 +3,6 @@
3
3
  module RubyEventStore
4
4
  module Mappers
5
5
  class InstrumentedMapper
6
- DEPRECATION_MESSAGE = <<~EOW
7
- Instrumentation event names *.rails_event_store are deprecated and will be removed in the next major release.
8
- Use *.ruby_event_store instead.
9
- EOW
10
- private_constant :DEPRECATION_MESSAGE
11
-
12
- RENAME_DEPRECATION_MESSAGE = <<~EOW
13
- Instrumentation event names serialize.mapper.ruby_event_store and deserialize.mapper.ruby_event_store are deprecated and will be removed in the next major release.
14
- Use event_to_record.mapper.ruby_event_store and record_to_event.mapper.ruby_event_store instead.
15
- The domain_event: payload key in serialize.mapper.ruby_event_store has been renamed to event: in event_to_record.mapper.ruby_event_store.
16
- EOW
17
- private_constant :RENAME_DEPRECATION_MESSAGE
18
-
19
6
  def initialize(mapper, instrumentation)
20
7
  @mapper = mapper
21
8
  @instrumentation = instrumentation
@@ -23,9 +10,12 @@ module RubyEventStore
23
10
 
24
11
  def event_to_record(event)
25
12
  instrumentation.instrument("event_to_record.mapper.ruby_event_store", event: event) do
26
- deprecated_instrument("serialize.mapper.ruby_event_store", { domain_event: event },
27
- canonical: "event_to_record.mapper.ruby_event_store",
28
- message: RENAME_DEPRECATION_MESSAGE) do
13
+ deprecated_instrument(
14
+ "serialize.mapper.ruby_event_store",
15
+ { domain_event: event },
16
+ canonical: "event_to_record.mapper.ruby_event_store",
17
+ key: :instrumented_mapper_serialize_deprecated,
18
+ ) do
29
19
  deprecated_instrument("serialize.mapper.rails_event_store", { domain_event: event }) do
30
20
  mapper.event_to_record(event)
31
21
  end
@@ -35,9 +25,12 @@ module RubyEventStore
35
25
 
36
26
  def record_to_event(record)
37
27
  instrumentation.instrument("record_to_event.mapper.ruby_event_store", record: record) do
38
- deprecated_instrument("deserialize.mapper.ruby_event_store", { record: record },
39
- canonical: "record_to_event.mapper.ruby_event_store",
40
- message: RENAME_DEPRECATION_MESSAGE) do
28
+ deprecated_instrument(
29
+ "deserialize.mapper.ruby_event_store",
30
+ { record: record },
31
+ canonical: "record_to_event.mapper.ruby_event_store",
32
+ key: :instrumented_mapper_serialize_deprecated,
33
+ ) do
41
34
  deprecated_instrument("deserialize.mapper.rails_event_store", { record: record }) do
42
35
  mapper.record_to_event(record)
43
36
  end
@@ -49,12 +42,12 @@ module RubyEventStore
49
42
 
50
43
  attr_reader :instrumentation, :mapper
51
44
 
52
- def deprecated_instrument(name, payload, canonical: nil, message: DEPRECATION_MESSAGE, &block)
45
+ def deprecated_instrument(name, payload, canonical: nil, key: :instrumentation_renamed, &block)
53
46
  canonical_name = canonical || name.sub("rails_event_store", "ruby_event_store")
54
47
  old_listeners = instrumentation.notifier.all_listeners_for(name)
55
48
  new_listeners = instrumentation.notifier.all_listeners_for(canonical_name)
56
49
  if (old_listeners - new_listeners).any?
57
- warn message
50
+ Deprecations.warn(key)
58
51
  instrumentation.instrument(name, payload, &block)
59
52
  else
60
53
  yield
@@ -4,10 +4,6 @@ module RubyEventStore
4
4
  module Mappers
5
5
  class NullMapper < PipelineMapper
6
6
  def initialize
7
- warn <<~EOW
8
- DEPRECATION WARNING: `RubyEventStore::Mappers::NullMapper` is deprecated and will be removed in the next major release.
9
- Use `RubyEventStore::Mappers::Default.new` instead.
10
- EOW
11
7
  super(Pipeline.new)
12
8
  end
13
9
  end
@@ -5,10 +5,6 @@ module RubyEventStore
5
5
  module Transformation
6
6
  class EventClassRemapper
7
7
  def initialize(class_map)
8
- warn <<~EOW
9
- DEPRECATION WARNING: `RubyEventStore::Mappers::Transformation::EventClassRemapper` is deprecated and will be removed in the next major release.
10
- Use `RubyEventStore::Mappers::Transformation::Upcast` instead.
11
- EOW
12
8
  @class_map = class_map
13
9
  end
14
10
 
@@ -3,22 +3,10 @@
3
3
  module RubyEventStore
4
4
  class Projection
5
5
  ANONYMOUS_CLASS = "#<Class:".freeze
6
- DEPRECATION_MESSAGE = <<~EOW
7
- RubyEventStore::Projection from_stream/from_all_streams/init/when/run API is deprecated and will be removed in the next major release.
8
- Use Projection.init(initial_state).on(EventClass) { |state, event| new_state }.call(scope) instead.
9
- EOW
10
- MULTI_SCOPE_DEPRECATION_MESSAGE = <<~EOW
11
- Passing multiple scopes to RubyEventStore::Projection#call is deprecated and will be removed in the next major release.
12
- Use a single scope instead, e.g. call(event_store.read.stream("stream_name")).
13
- EOW
14
- NEW_CONSTRUCTOR_DEPRECATION_MESSAGE = <<~EOW
15
- RubyEventStore::Projection.new is deprecated and will be removed in the next major release.
16
- Use Projection.init(initial_state) instead.
17
- EOW
18
- private_constant :ANONYMOUS_CLASS, :DEPRECATION_MESSAGE, :MULTI_SCOPE_DEPRECATION_MESSAGE, :NEW_CONSTRUCTOR_DEPRECATION_MESSAGE
6
+ private_constant :ANONYMOUS_CLASS
19
7
 
20
8
  def initialize(initial_state = nil, _internal: false)
21
- warn NEW_CONSTRUCTOR_DEPRECATION_MESSAGE unless _internal
9
+ Deprecations.warn(:projection_new_constructor) unless _internal
22
10
  @handlers = {}
23
11
  @init = -> { initial_state }
24
12
  @streams = []
@@ -43,15 +31,12 @@ module RubyEventStore
43
31
  def call(*scopes)
44
32
  return initial_state if handled_events.empty?
45
33
 
46
- warn MULTI_SCOPE_DEPRECATION_MESSAGE if scopes.size > 1
34
+ Deprecations.warn(:projection_multiple_scopes) if scopes.size > 1
47
35
 
48
- scopes.reduce(initial_state) do |state, scope|
49
- scope.of_type(handled_events).reduce(state, &method(:transition))
50
- end
36
+ scopes.reduce(initial_state) { |state, scope| scope.of_type(handled_events).reduce(state, &method(:transition)) }
51
37
  end
52
38
 
53
39
  def self.from_stream(stream_or_streams)
54
- warn DEPRECATION_MESSAGE
55
40
  streams = Array(stream_or_streams)
56
41
  raise(ArgumentError, "At least one stream must be given") if streams.empty?
57
42
  projection = new(_internal: true)
@@ -60,36 +45,36 @@ module RubyEventStore
60
45
  end
61
46
 
62
47
  def self.from_all_streams
63
- warn DEPRECATION_MESSAGE
64
48
  new(_internal: true)
65
49
  end
66
50
 
67
51
  def init(handler)
68
- warn DEPRECATION_MESSAGE
69
52
  @init = handler
70
53
  self
71
54
  end
72
55
 
73
56
  def when(events, handler)
74
- warn DEPRECATION_MESSAGE
75
57
  Array(events).each do |event_klass|
76
58
  name = event_klass.to_s
77
- @handlers[name] = ->(state, event) { handler.call(state, event); state }
59
+ @handlers[name] = ->(state, event) do
60
+ handler.call(state, event)
61
+ state
62
+ end
78
63
  end
79
64
  self
80
65
  end
81
66
 
82
67
  def run(event_store, start: nil, count: PAGE_SIZE)
83
- warn DEPRECATION_MESSAGE
84
-
85
68
  if @streams.any?
86
69
  raise ArgumentError, "Start must be an array with event ids" unless valid_start_for_streams?(start)
87
70
  scopes =
88
- @streams.zip(start || []).map do |stream, start_event_id|
89
- scope = event_store.read.stream(stream).in_batches(count)
90
- scope = scope.from(start_event_id) if start_event_id
91
- scope
92
- end
71
+ @streams
72
+ .zip(start || [])
73
+ .map do |stream, start_event_id|
74
+ scope = event_store.read.stream(stream).in_batches(count)
75
+ scope = scope.from(start_event_id) if start_event_id
76
+ scope
77
+ end
93
78
  else
94
79
  raise ArgumentError, "Start must be valid event id" unless valid_start_for_all_streams?(start)
95
80
  scope = event_store.read.in_batches(count)
@@ -246,11 +246,6 @@ module RubyEventStore
246
246
  end
247
247
 
248
248
  def in_batches_of(batch_size = DEFAULT_BATCH_SIZE)
249
- warn <<~EOW
250
- RubyEventStore::Specification#in_batches_of is deprecated and will be removed in the next major release.
251
-
252
- Use #in_batches instead.
253
- EOW
254
249
  in_batches(batch_size)
255
250
  end
256
251
 
@@ -298,11 +293,6 @@ module RubyEventStore
298
293
  end
299
294
 
300
295
  def of_types(*types)
301
- warn <<~EOW
302
- RubyEventStore::Specification#of_types is deprecated and will be removed in the next major release.
303
-
304
- Use #of_type instead.
305
- EOW
306
296
  of_type(*types)
307
297
  end
308
298
 
@@ -2,14 +2,9 @@
2
2
 
3
3
  module RubyEventStore
4
4
  class SyncScheduler
5
- DEPRECATION_MESSAGE = <<~EOW
6
- DEPRECATION WARNING: Passing a class as a subscriber is deprecated and will be removed in the next major release.
7
- Pass an instance or lambda instead, e.g. subscribe(MyHandler.new, to: [MyEvent]).
8
- EOW
9
-
10
5
  def call(subscriber, event, _)
11
6
  if Class === subscriber
12
- warn DEPRECATION_MESSAGE
7
+ Deprecations.warn(:class_subscriber)
13
8
  subscriber = subscriber.new
14
9
  end
15
10
  subscriber.call(event)
@@ -17,7 +12,7 @@ module RubyEventStore
17
12
 
18
13
  def verify(subscriber)
19
14
  if Class === subscriber
20
- warn DEPRECATION_MESSAGE
15
+ Deprecations.warn(:class_subscriber)
21
16
  begin
22
17
  subscriber.new.respond_to?(:call)
23
18
  rescue ArgumentError
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyEventStore
4
- VERSION = "2.19.1"
4
+ VERSION = "2.19.2"
5
5
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "ruby_event_store/deprecations"
3
4
  require_relative "ruby_event_store/sync_scheduler"
4
5
  require_relative "ruby_event_store/dispatcher"
5
6
  require_relative "ruby_event_store/subscriptions"
@@ -53,3 +54,4 @@ require_relative "ruby_event_store/instrumented_dispatcher"
53
54
  require_relative "ruby_event_store/instrumented_subscriptions"
54
55
  require_relative "ruby_event_store/instrumented_broker"
55
56
  require_relative "ruby_event_store/event_type_resolver"
57
+ require_relative "ruby_event_store/deprecated"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_event_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.19.1
4
+ version: 2.19.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
@@ -47,6 +47,8 @@ files:
47
47
  - lib/ruby_event_store/composed_dispatcher.rb
48
48
  - lib/ruby_event_store/constants.rb
49
49
  - lib/ruby_event_store/correlated_commands.rb
50
+ - lib/ruby_event_store/deprecated.rb
51
+ - lib/ruby_event_store/deprecations.rb
50
52
  - lib/ruby_event_store/dispatcher.rb
51
53
  - lib/ruby_event_store/errors.rb
52
54
  - lib/ruby_event_store/event.rb
@@ -123,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
125
  - !ruby/object:Gem::Version
124
126
  version: '0'
125
127
  requirements: []
126
- rubygems_version: 4.0.6
128
+ rubygems_version: 4.0.10
127
129
  specification_version: 4
128
130
  summary: Implementation of an event store in Ruby
129
131
  test_files: []