deimos-ruby 2.1.9 → 2.1.10

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: 52b13a01b0356e08ceb56ae75eb55f39d6578070085184521e063d7fb3714f1f
4
- data.tar.gz: 36f972a37d52c3c8fb3ea5e53c21c1f39caad58fa8411f0dc380b5a8b7f1ed9e
3
+ metadata.gz: 4298f86cb3eb5cb847e29361a4f6a33f5db7492832c730155956c1099f26006b
4
+ data.tar.gz: fe50a1133a94f9263758ba29198bbdccb83e35ccb45aee27107374f0141c26ba
5
5
  SHA512:
6
- metadata.gz: e5d2c15d11756bc133f1ea57e9c112023c557aa6200a4ac7469f9b07f23835d16593ae6ef9d4e20c76dcb4a6acff9d4723355e14ec6e28d1887e09958a6f3283
7
- data.tar.gz: d9f1e82068b7f5c7424590fda13a4d59fa9345dc3841c9b1f8413248f031548b276fa5660d39c9fe4f5621bc47089049f70af97d207e3f02af5122d3971c10a9
6
+ metadata.gz: d80a71f983e026f703b616d7206320922a22c471fb16d9c364b3fb24a826156eee8ab022666138e4b287f7a153e2abf4079ff58b758e98805902fc3cf34d2a49
7
+ data.tar.gz: 51d3ba78308dfc330a01a0cc53c3105c70afe1c3f2ba812ec70902661be7bf5f381681135ff4909be9b3b153432553aa8a8bb8f11d605bd63308163a407f1e92
@@ -0,0 +1,31 @@
1
+ name: Release Gem
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ tags:
7
+ - 'v*.*.*' # Matches semantic versioning tags like v1.0.0
8
+ workflow_dispatch: # Allows manual triggering of the workflow
9
+
10
+ jobs:
11
+ push:
12
+ name: Push gem to RubyGems.org
13
+ runs-on: ubuntu-latest
14
+
15
+ permissions:
16
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
17
+ contents: write # IMPORTANT: this permission is required for `rake release` to push the release tag
18
+
19
+ steps:
20
+ # Set up
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ persist-credentials: false
24
+ - name: Set up Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ bundler-cache: true
28
+ ruby-version: ruby
29
+
30
+ # Release
31
+ - uses: rubygems/release-gem@v1
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
+ # 2.1.10 - 2025-09-19
11
+
12
+ - Feature: Added `delete_record?` method to ActiveRecordConsumer to allow inspection of the payload to decide whether to delete, instead of hardcoding it to only delete on a null payload.
13
+
10
14
  # 2.1.9 - 2025-08-13
11
15
 
12
16
  - Fix: When a model uses multiple producers, `send_kafka_event_on_update` no longer aggregates `watched_attributes` across all producers and publishes to all of them if any field changed. It now evaluates each producer’s `watched_attributes` independently and publishes only to the producers whose fields changed (per‑producer isolation).
data/README.md CHANGED
@@ -498,6 +498,12 @@ class MyConsumer < Deimos::ActiveRecordConsumer
498
498
  def destroy_record(record)
499
499
  super
500
500
  end
501
+
502
+ # Optional override of the logic determining whether to delete the record. Default is to
503
+ # delete it if the payload is nil.
504
+ def delete_record?(record)
505
+ super
506
+ end
501
507
 
502
508
  # Optional override to change the attributes of the record before they
503
509
  # are saved.
data/deimos-ruby.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency('activerecord-import')
27
27
  spec.add_development_dependency('activerecord-trilogy-adapter')
28
28
  spec.add_development_dependency('avro', '~> 1.9')
29
- spec.add_development_dependency('database_cleaner', '~> 1.7')
29
+ spec.add_development_dependency('database_cleaner', '~> 2.1')
30
30
  spec.add_development_dependency('ddtrace', '>= 0.11')
31
31
  spec.add_development_dependency('dogstatsd-ruby', '>= 4.2')
32
32
  spec.add_development_dependency('guard', '~> 2')
@@ -35,15 +35,15 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency('karafka-testing', '~> 2.0')
36
36
  spec.add_development_dependency('trilogy', '>= 0.1')
37
37
  spec.add_development_dependency('pg', '~> 1.1')
38
- spec.add_development_dependency('rails', '~> 6')
38
+ spec.add_development_dependency('rails', '~> 8.0')
39
39
  spec.add_development_dependency('rake', '~> 13')
40
40
  spec.add_development_dependency('rspec', '~> 3')
41
41
  spec.add_development_dependency('rspec_junit_formatter', '~>0.3')
42
- spec.add_development_dependency('rspec-rails', '~> 4')
42
+ spec.add_development_dependency('rspec-rails', '~> 8.0')
43
43
  spec.add_development_dependency('rspec-snapshot', '~> 2.0')
44
44
  spec.add_development_dependency('rubocop', '0.89.0')
45
45
  spec.add_development_dependency('rubocop-rspec', '1.42.0')
46
46
  spec.add_development_dependency('sord', '>= 5.0')
47
- spec.add_development_dependency('sqlite3', '~> 1.3')
47
+ spec.add_development_dependency('sqlite3', '~> 2.7')
48
48
  spec.add_development_dependency('steep', '~> 1.0')
49
49
  end
@@ -125,7 +125,7 @@ module Deimos
125
125
  def update_database(messages)
126
126
  # Find all upserted records (i.e. that have a payload) and all
127
127
  # deleted record (no payload)
128
- removed, upserted = messages.partition(&:tombstone?)
128
+ removed, upserted = messages.partition { |m| delete_record?(m) }
129
129
 
130
130
  max_db_batch_size = self.class.config[:max_db_batch_size]
131
131
  if upserted.any?
@@ -42,7 +42,7 @@ module Deimos
42
42
 
43
43
  klass = self.class.config[:record_class]
44
44
  record = fetch_record(klass, message.payload.to_h.with_indifferent_access, message.key)
45
- if message.payload.nil?
45
+ if delete_record?(message)
46
46
  destroy_record(record)
47
47
  return
48
48
  end
@@ -95,6 +95,14 @@ module Deimos
95
95
  self.converter.convert(payload)
96
96
  end
97
97
 
98
+ # Indicates whether to delete the given message. Defaults to checking if the message
99
+ # payload is nil.
100
+ # @param message [Deimos::Message]
101
+ # @return [Boolean]
102
+ def delete_record?(message)
103
+ message.payload.nil?
104
+ end
105
+
98
106
  # Override this message to conditionally save records
99
107
  # @param _payload [Hash,Deimos::SchemaClass::Record] The kafka message
100
108
  # @return [Boolean] if true, record is created/update.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '2.1.9'
4
+ VERSION = '2.1.10'
5
5
  end
@@ -16,7 +16,7 @@ RSpec.describe Deimos::Generators::ActiveRecordGenerator do
16
16
  files = Dir['db/migrate/*.rb']
17
17
  expect(files.length).to eq(1)
18
18
  results = <<~MIGRATION
19
- class CreateGeneratedTable < ActiveRecord::Migration[6.1]
19
+ class CreateGeneratedTable < ActiveRecord::Migration[8.0]
20
20
  def up
21
21
  if table_exists?(:generated_table)
22
22
  warn "generated_table already exists, exiting"
@@ -273,9 +273,12 @@ module ProducerTest
273
273
  end
274
274
 
275
275
  describe 'payload logging' do
276
+ before(:each) do
277
+ allow(Karafka.logger).to receive(:info)
278
+ allow(Karafka.logger).to receive(:tagged).and_yield(Karafka.logger)
279
+ end
276
280
  context 'with default / full' do
277
281
  it 'should log full payload' do
278
- allow(Karafka.logger).to receive(:info)
279
282
  MyProducerWithID.publish_list(
280
283
  [
281
284
  { 'test_id' => 'foo', 'some_int' => 123, :payload_key => 'key' },
@@ -301,7 +304,6 @@ module ProducerTest
301
304
  context 'with count' do
302
305
  it 'should log only count' do
303
306
  Deimos.karafka_config_for(topic: 'my-topic-with-id').payload_log :count
304
- allow(Karafka.logger).to receive(:info)
305
307
  MyProducerWithID.publish_list(
306
308
  [
307
309
  { 'test_id' => 'foo', 'some_int' => 123, :payload_key => 'key' },
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deimos-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.9
4
+ version: 2.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-08-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: avro_turf
@@ -126,14 +125,14 @@ dependencies:
126
125
  requirements:
127
126
  - - "~>"
128
127
  - !ruby/object:Gem::Version
129
- version: '1.7'
128
+ version: '2.1'
130
129
  type: :development
131
130
  prerelease: false
132
131
  version_requirements: !ruby/object:Gem::Requirement
133
132
  requirements:
134
133
  - - "~>"
135
134
  - !ruby/object:Gem::Version
136
- version: '1.7'
135
+ version: '2.1'
137
136
  - !ruby/object:Gem::Dependency
138
137
  name: ddtrace
139
138
  requirement: !ruby/object:Gem::Requirement
@@ -252,14 +251,14 @@ dependencies:
252
251
  requirements:
253
252
  - - "~>"
254
253
  - !ruby/object:Gem::Version
255
- version: '6'
254
+ version: '8.0'
256
255
  type: :development
257
256
  prerelease: false
258
257
  version_requirements: !ruby/object:Gem::Requirement
259
258
  requirements:
260
259
  - - "~>"
261
260
  - !ruby/object:Gem::Version
262
- version: '6'
261
+ version: '8.0'
263
262
  - !ruby/object:Gem::Dependency
264
263
  name: rake
265
264
  requirement: !ruby/object:Gem::Requirement
@@ -308,14 +307,14 @@ dependencies:
308
307
  requirements:
309
308
  - - "~>"
310
309
  - !ruby/object:Gem::Version
311
- version: '4'
310
+ version: '8.0'
312
311
  type: :development
313
312
  prerelease: false
314
313
  version_requirements: !ruby/object:Gem::Requirement
315
314
  requirements:
316
315
  - - "~>"
317
316
  - !ruby/object:Gem::Version
318
- version: '4'
317
+ version: '8.0'
319
318
  - !ruby/object:Gem::Dependency
320
319
  name: rspec-snapshot
321
320
  requirement: !ruby/object:Gem::Requirement
@@ -378,14 +377,14 @@ dependencies:
378
377
  requirements:
379
378
  - - "~>"
380
379
  - !ruby/object:Gem::Version
381
- version: '1.3'
380
+ version: '2.7'
382
381
  type: :development
383
382
  prerelease: false
384
383
  version_requirements: !ruby/object:Gem::Requirement
385
384
  requirements:
386
385
  - - "~>"
387
386
  - !ruby/object:Gem::Version
388
- version: '1.3'
387
+ version: '2.7'
389
388
  - !ruby/object:Gem::Dependency
390
389
  name: steep
391
390
  requirement: !ruby/object:Gem::Requirement
@@ -400,7 +399,6 @@ dependencies:
400
399
  - - "~>"
401
400
  - !ruby/object:Gem::Version
402
401
  version: '1.0'
403
- description:
404
402
  email:
405
403
  - daniel.orner@wishabi.com
406
404
  executables:
@@ -410,6 +408,7 @@ extensions: []
410
408
  extra_rdoc_files: []
411
409
  files:
412
410
  - ".github/workflows/ci.yml"
411
+ - ".github/workflows/release.yml"
413
412
  - ".gitignore"
414
413
  - ".gitmodules"
415
414
  - ".rspec"
@@ -637,7 +636,6 @@ homepage: ''
637
636
  licenses:
638
637
  - Apache-2.0
639
638
  metadata: {}
640
- post_install_message:
641
639
  rdoc_options: []
642
640
  require_paths:
643
641
  - lib
@@ -652,8 +650,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
652
650
  - !ruby/object:Gem::Version
653
651
  version: '0'
654
652
  requirements: []
655
- rubygems_version: 3.4.10
656
- signing_key:
653
+ rubygems_version: 3.6.9
657
654
  specification_version: 4
658
655
  summary: Kafka libraries for Ruby.
659
656
  test_files: