deimos-ruby 1.16.1 → 1.16.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: 4567929aa6bd384c8660dba57a515c4ed3a2cd9ed68538b0ecadac9365a95ff0
4
- data.tar.gz: a92f990d962472198909ed848edbc2525da9bc20e6cfb62ec10636ca518714ef
3
+ metadata.gz: 59c0f6801979649cc677cc485cfc1435d1ef235769784a864eabbc3e35e55573
4
+ data.tar.gz: 85d9adfa94010a7594a94e8770ee15922a893ecb53ccb600e7911ae9615ff574
5
5
  SHA512:
6
- metadata.gz: 4db26d8c81d484a1888c26079291d54b410aa71c472780a49ecc0f25bc395c9503c0cdfd53847b9f289b00d1467cea357f8946325e4a22bff4bbcf5658fd12a5
7
- data.tar.gz: cfb9415e32cfb96447ea95e80e62d1364933de4d0fd436b29056e94455ccafa012de4f07b8e8549e6e759c3ae909873d3b9fe9b70502dc085c3dd3caac4c2393
6
+ metadata.gz: c663849c130074d566875b278b4e6af667c814e1860a24ac531cc163e819aaac399381578a1d93130b9121402ec1f500108155ee20f37be6999df3d496869376
7
+ data.tar.gz: 6ba7849db0b98b80684381056be5aeb1f6d206ee65e742c8e33c1cdc9cb0f0f150d8f61f868f18e29837ac2e3279d1b2737c244c79201cbec9038da1c7128264
data/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## UNRELEASED
9
9
 
10
+ # 1.16.2 - 2022-09-07
11
+
12
+ - Added support of post_process method in ActiveRecordProducer
13
+
10
14
  # 1.16.1 - 2022-08-03
11
15
 
12
16
  - Fix issues with `enum` schema classes (e.g. equality not working, `to_s` not working)
data/README.md CHANGED
@@ -785,6 +785,21 @@ have one process running at a time. If a particular poll takes longer than
785
785
  the poll interval (i.e. interval is set at 1 minute but it takes 75 seconds)
786
786
  the next poll will begin immediately following the first one completing.
787
787
 
788
+ To Post-Process records that are sent to Kafka:
789
+
790
+ You need to define one additional method in your producer class to post-process the messages sent to Kafka.
791
+
792
+ ```ruby
793
+ class MyProducer < Deimos::ActiveRecordProducer
794
+ ...
795
+ def post_process(batch)
796
+ # If you need to do some extra actions with
797
+ # the collection of elements you just sent to Kafka
798
+ # write some code here
799
+ end
800
+ end
801
+ ```
802
+
788
803
  ## Running consumers
789
804
 
790
805
  Deimos includes a rake task. Once it's in your gemfile, just run
@@ -44,6 +44,7 @@ module Deimos
44
44
  generate_payload(attrs, record).with_indifferent_access
45
45
  end
46
46
  self.publish_list(messages, force_send: force_send)
47
+ self.post_process(records)
47
48
  end
48
49
 
49
50
  # Generate the payload, given a list of attributes or a record..
@@ -85,6 +86,12 @@ module Deimos
85
86
  time_to
86
87
  )
87
88
  end
89
+
90
+ # Post process records after publishing
91
+ # @param records [Array<ActiveRecord::Base>]
92
+ def post_process(_records)
93
+ end
94
+
88
95
  end
89
96
  end
90
97
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '1.16.1'
4
+ VERSION = '1.16.2'
5
5
  end
@@ -45,6 +45,24 @@ describe Deimos::ActiveRecordProducer do
45
45
  record_class Widget
46
46
  end
47
47
  stub_const('MyProducerWithUniqueID', producer_class)
48
+
49
+ producer_class = Class.new(Deimos::ActiveRecordProducer) do
50
+ schema 'MySchemaWithUniqueId'
51
+ namespace 'com.my-namespace'
52
+ topic 'my-topic-with-unique-id'
53
+ key_config field: :id
54
+ record_class Widget
55
+
56
+ # :nodoc:
57
+ def self.post_process(batch)
58
+ batch.each do |message|
59
+ message.test_id = 'post_processed'
60
+ message.save!
61
+ end
62
+ end
63
+ end
64
+
65
+ stub_const('MyProducerWithPostProcess', producer_class)
48
66
  end
49
67
 
50
68
  describe 'produce' do
@@ -85,6 +103,12 @@ describe Deimos::ActiveRecordProducer do
85
103
  )
86
104
  end
87
105
 
106
+ it 'should post process the batch of records in #send_events' do
107
+ widget = Widget.create!(test_id: 'abc3', some_int: 4)
108
+ MyProducerWithPostProcess.send_events([widget])
109
+ expect(widget.reload.test_id).to eq('post_processed')
110
+ end
111
+
88
112
  end
89
113
  end
90
114
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.1
4
+ version: 1.16.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-03 00:00:00.000000000 Z
11
+ date: 2022-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf