Module: Karafka::Pro::Routing::Features::DirectAssignments::Topic
- Defined in:
- lib/karafka/pro/routing/features/direct_assignments/topic.rb
Overview
Topic extensions for direct assignments
Instance Method Summary collapse
-
#direct_assignments(*partitions_or_all) ⇒ Object
(also: #assign)
Allows for direct assignment of.
-
#initialize ⇒ Object
This method calls the parent class initializer and then sets up the extra instance variable to nil.
-
#to_h ⇒ Hash
Topic with all its native configuration options plus direct assignments.
Instance Method Details
#direct_assignments(*partitions_or_all) ⇒ Object Also known as: assign
Allows for direct assignment of
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/karafka/pro/routing/features/direct_assignments/topic.rb', line 35 def direct_assignments(*partitions_or_all) @direct_assignments ||= if partitions_or_all == [true] Config.new( active: true, partitions: true ) elsif partitions_or_all.size == 1 && partitions_or_all.first.is_a?(Range) partitions_or_all = partitions_or_all.first.to_a Config.new( active: true, partitions: partitions_or_all.to_h { |partition| [partition, true] } ) else Config.new( active: !partitions_or_all.empty?, partitions: partitions_or_all.to_h { |partition| [partition, true] } ) end end |
#initialize ⇒ Object
This method calls the parent class initializer and then sets up the extra instance variable to nil. The explicit initialization to nil is included as an optimization for Ruby’s object shapes system, which improves memory layout and access performance.
17 18 19 20 |
# File 'lib/karafka/pro/routing/features/direct_assignments/topic.rb', line 17 def initialize(...) super @direct_assignments = nil end |
#to_h ⇒ Hash
Returns topic with all its native configuration options plus direct assignments.
60 61 62 63 64 |
# File 'lib/karafka/pro/routing/features/direct_assignments/topic.rb', line 60 def to_h super.merge( direct_assignments: direct_assignments.to_h ).freeze end |