rimless 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8a247d9518f07c23212c98c743fd9012528861c5db9672b5cf0696174417872
4
- data.tar.gz: 14beb7441d3c156c886550889d748f1a7b743815f12b16cca551eca71fdd7751
3
+ metadata.gz: 1c4f8ffaba9e9935ef3dce5dbb9dbe983c0b7405fd2b94b0e3c49abf4d23f37a
4
+ data.tar.gz: 2590e8e7d9858460924a7947413770b51b1b367f77add354d79af8f95621eb1e
5
5
  SHA512:
6
- metadata.gz: 4952c0e0a5b610d98f5aa09e024b4998eaed636ed6e48fddf63d4bf2d6012f272b63661820938b0157c46c9373f4841ef6cb046904fbb82a0068a87047def8c4
7
- data.tar.gz: 757a22a53a12d8cd91dbc3b91cffe29695d57212b98c5c97e218f9ea6d18c103c45eec5d6a9aefa6104d5bbcd405ce4feb7d19898ca01199802d58425d646af1
6
+ metadata.gz: d06e180257c7c14b712aac3e7bb47105354ab03ad177c68737d32c5867166b83503a25afbd5b3bb60625da05deedc4a77581497a2c02f5b8344452ad0d3fe097
7
+ data.tar.gz: e1859640122aaab64ee8af5c1272cc29a86e43551e7b505d5295f18b214baa94db6d6f7273086f10b5417c5af12e7a739643415a218131a95e8a8d1f171761de
data/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ### 1.1.1
2
+
3
+ * Corrected the GNU Make release target
4
+
5
+ ### 1.1.0
6
+
7
+ * Added support for Karafka `~> 1.4.0` and set is as minimum dependency version
8
+ (#10)
9
+
10
+ ### 1.0.4
11
+
12
+ * Mocked WaterDrop producers in the rimless rspec helper so that tests
13
+ won't actually talk to Kafka (#9)
14
+
15
+ ### 1.0.3
16
+
17
+ * Corrected broken stats when no consumer is yet defined (#8)
18
+
19
+ ### 1.0.2
20
+
21
+ * Only load the statistics rake task when Rails is available and the
22
+ environment is development (instead of not production, this may cause issues
23
+ for +canary+ or +stage+ Rails environments)
24
+
1
25
  ### 1.0.1
2
26
 
3
27
  * Added the missing +Karafka::Testing::RSpec::Helpers+ include to the
data/Makefile CHANGED
@@ -85,7 +85,11 @@ update: install
85
85
  @$(MKDIR) -p $(VENDOR_DIR)
86
86
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
87
87
 
88
- test: #install
88
+ test: \
89
+ test-specs \
90
+ test-style
91
+
92
+ test-specs:
89
93
  # Run the whole test suite
90
94
  @$(call run-shell,$(BUNDLE) exec $(RAKE))
91
95
 
@@ -149,4 +153,4 @@ stats: install
149
153
 
150
154
  release:
151
155
  # Release a new gem version
152
- @$(RAKE) release
156
+ @$(BUNDLE) exec $(RAKE) release
@@ -131,7 +131,7 @@ module Rimless
131
131
  topic(topic_name) do
132
132
  consumer dest_consumer
133
133
  worker Rimless::ConsumerJob
134
- interchanger Rimless::Karafka::Base64Interchanger
134
+ interchanger Rimless::Karafka::Base64Interchanger.new
135
135
  end
136
136
  end
137
137
  end
@@ -6,15 +6,19 @@ module Rimless
6
6
  class AvroDeserializer
7
7
  # Deserialize an Apache Avro encoded Apache Kafka message.
8
8
  #
9
- # @param message [String] the binary blob to deserialize
9
+ # @param params [Karafka::Params::Params] the Karafka message parameters
10
10
  # @return [Hash{Symbol => Mixed}] the deserialized Apache Avro message
11
- def call(message)
11
+ def call(params)
12
+ # When the Kafka message does not have a payload, we won't fail.
13
+ # This is for Kafka users which use log compaction with a nil payload.
14
+ return if params.raw_payload.nil?
15
+
12
16
  # We use sparsed hashes inside of Apache Avro messages for schema-less
13
17
  # blobs of data, such as loosely structured metadata blobs. Thats a
14
18
  # somewhat bad idea on strictly typed and defined messages, but their
15
19
  # occurence should be rare.
16
20
  Rimless
17
- .decode(message.payload)
21
+ .decode(params.raw_payload)
18
22
  .yield_self { |data| Sparsify(data, sparse_array: true) }
19
23
  .yield_self { |data| data.transform_keys { |key| key.delete('\\') } }
20
24
  .yield_self { |data| Unsparsify(data, sparse_array: true) }
@@ -7,14 +7,14 @@ module Rimless
7
7
  #
8
8
  # rubocop:disable Security/MarshalLoad because we encode/decode the
9
9
  # messages in our own controlled context
10
- class Base64Interchanger
10
+ class Base64Interchanger < ::Karafka::Interchanger
11
11
  # Encode a binary Apache Kafka message(s) so they can be passed to the
12
12
  # Sidekiq +Rimless::ConsumerJob+.
13
13
  #
14
14
  # @param params_batch [Mixed] the raw message(s) to encode
15
15
  # @return [String] the marshaled+base64 encoded data
16
- def self.encode(params_batch)
17
- Base64.encode64(Marshal.dump(params_batch.to_a))
16
+ def encode(params_batch)
17
+ Base64.encode64(Marshal.dump(super))
18
18
  end
19
19
 
20
20
  # Decode the binary Apache Kafka message(s) so they can be processed by
@@ -22,8 +22,8 @@ module Rimless
22
22
  #
23
23
  # @param params_string [String] the marshaled+base64 encoded data
24
24
  # @return [Mixed] the unmarshaled+base64 decoded data
25
- def self.decode(params_string)
26
- Marshal.load(Base64.decode64(params_string))
25
+ def decode(params_string)
26
+ Marshal.load(Base64.decode64(super)).map(&:stringify_keys)
27
27
  end
28
28
  end
29
29
  # rubocop:enable Security/MarshalLoad
data/lib/rimless/rspec.rb CHANGED
@@ -62,6 +62,10 @@ RSPEC_CONFIGURER.configure do |config|
62
62
  # Clear any cached data
63
63
  FakeConfluentSchemaRegistryServer.clear
64
64
 
65
+ # Do not interact with Apache Kafka itself on tests
66
+ allow(WaterDrop::AsyncProducer).to receive(:call)
67
+ allow(WaterDrop::SyncProducer).to receive(:call)
68
+
65
69
  # Reconfigure the Rimless AvroTurf instance
66
70
  Rimless.configure_avro_turf
67
71
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if defined?(Rails) && !Rails.env.production?
3
+ if defined?(Rails) && Rails.env.development?
4
4
  require 'rspec/core/rake_task'
5
5
 
6
6
  task :stats do
@@ -9,6 +9,8 @@ if defined?(Rails) && !Rails.env.production?
9
9
  [
10
10
  [:unshift, 'Consumer', 'app/consumers']
11
11
  ].each do |method, type, dir|
12
+ next unless File.directory? dir
13
+
12
14
  ::STATS_DIRECTORIES.send(method, [type, dir])
13
15
  ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
14
16
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Rimless
4
4
  # The version of the +rimless+ gem
5
- VERSION = '1.0.1'
5
+ VERSION = '1.1.1'
6
6
  end
data/rimless.gemspec CHANGED
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency 'activesupport', '>= 4.2.0'
27
27
  spec.add_runtime_dependency 'avro_turf', '~> 0.11.0'
28
- spec.add_runtime_dependency 'karafka', '~> 1.3'
29
- spec.add_runtime_dependency 'karafka-sidekiq-backend', '~> 1.3'
30
- spec.add_runtime_dependency 'karafka-testing', '~> 1.3'
28
+ spec.add_runtime_dependency 'karafka', '~> 1.4'
29
+ spec.add_runtime_dependency 'karafka-sidekiq-backend', '~> 1.4'
30
+ spec.add_runtime_dependency 'karafka-testing', '~> 1.4'
31
31
  spec.add_runtime_dependency 'sinatra'
32
32
  spec.add_runtime_dependency 'sparsify', '~> 1.1'
33
33
  spec.add_runtime_dependency 'waterdrop', '~> 1.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rimless
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-11 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,42 +44,42 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '1.4'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.3'
54
+ version: '1.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: karafka-sidekiq-backend
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '1.4'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '1.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: karafka-testing
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.3'
75
+ version: '1.4'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.3'
82
+ version: '1.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sinatra
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -418,7 +418,7 @@ files:
418
418
  homepage: https://github.com/hausgold/rimless
419
419
  licenses: []
420
420
  metadata: {}
421
- post_install_message:
421
+ post_install_message:
422
422
  rdoc_options: []
423
423
  require_paths:
424
424
  - lib
@@ -433,8 +433,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
433
433
  - !ruby/object:Gem::Version
434
434
  version: '0'
435
435
  requirements: []
436
- rubygems_version: 3.1.2
437
- signing_key:
436
+ rubygems_version: 3.2.16
437
+ signing_key:
438
438
  specification_version: 4
439
439
  summary: A bundle of opinionated Apache Kafka / Confluent Schema Registry helpers.
440
440
  test_files: []