karafka 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/.coditsu/ci.yml +3 -0
  5. data/.console_irbrc +1 -3
  6. data/.github/FUNDING.yml +3 -0
  7. data/.github/ISSUE_TEMPLATE/bug_report.md +50 -0
  8. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  9. data/.gitignore +1 -0
  10. data/.ruby-version +1 -1
  11. data/.travis.yml +35 -16
  12. data/CHANGELOG.md +151 -2
  13. data/CONTRIBUTING.md +6 -7
  14. data/Gemfile +3 -3
  15. data/Gemfile.lock +96 -70
  16. data/README.md +29 -23
  17. data/bin/karafka +1 -1
  18. data/certs/mensfeld.pem +25 -0
  19. data/config/errors.yml +38 -5
  20. data/karafka.gemspec +19 -10
  21. data/lib/karafka.rb +15 -12
  22. data/lib/karafka/app.rb +19 -18
  23. data/lib/karafka/attributes_map.rb +15 -14
  24. data/lib/karafka/backends/inline.rb +1 -2
  25. data/lib/karafka/base_consumer.rb +57 -0
  26. data/lib/karafka/base_responder.rb +72 -31
  27. data/lib/karafka/cli.rb +1 -1
  28. data/lib/karafka/cli/console.rb +11 -9
  29. data/lib/karafka/cli/flow.rb +0 -1
  30. data/lib/karafka/cli/info.rb +3 -1
  31. data/lib/karafka/cli/install.rb +29 -8
  32. data/lib/karafka/cli/server.rb +11 -7
  33. data/lib/karafka/code_reloader.rb +67 -0
  34. data/lib/karafka/connection/{config_adapter.rb → api_adapter.rb} +67 -24
  35. data/lib/karafka/connection/batch_delegator.rb +51 -0
  36. data/lib/karafka/connection/builder.rb +16 -0
  37. data/lib/karafka/connection/client.rb +117 -0
  38. data/lib/karafka/connection/listener.rb +37 -17
  39. data/lib/karafka/connection/message_delegator.rb +36 -0
  40. data/lib/karafka/consumers/callbacks.rb +71 -0
  41. data/lib/karafka/consumers/includer.rb +63 -0
  42. data/lib/karafka/consumers/metadata.rb +10 -0
  43. data/lib/karafka/consumers/responders.rb +24 -0
  44. data/lib/karafka/{controllers → consumers}/single_params.rb +3 -3
  45. data/lib/karafka/contracts.rb +10 -0
  46. data/lib/karafka/contracts/config.rb +21 -0
  47. data/lib/karafka/contracts/consumer_group.rb +206 -0
  48. data/lib/karafka/contracts/consumer_group_topic.rb +19 -0
  49. data/lib/karafka/contracts/responder_usage.rb +54 -0
  50. data/lib/karafka/contracts/server_cli_options.rb +29 -0
  51. data/lib/karafka/errors.rb +23 -15
  52. data/lib/karafka/fetcher.rb +6 -12
  53. data/lib/karafka/helpers/class_matcher.rb +19 -9
  54. data/lib/karafka/helpers/config_retriever.rb +3 -3
  55. data/lib/karafka/helpers/inflector.rb +26 -0
  56. data/lib/karafka/helpers/multi_delegator.rb +0 -1
  57. data/lib/karafka/instrumentation/logger.rb +57 -0
  58. data/lib/karafka/instrumentation/monitor.rb +70 -0
  59. data/lib/karafka/instrumentation/proctitle_listener.rb +36 -0
  60. data/lib/karafka/instrumentation/stdout_listener.rb +138 -0
  61. data/lib/karafka/params/builders/metadata.rb +33 -0
  62. data/lib/karafka/params/builders/params.rb +36 -0
  63. data/lib/karafka/params/builders/params_batch.rb +25 -0
  64. data/lib/karafka/params/metadata.rb +35 -0
  65. data/lib/karafka/params/params.rb +35 -95
  66. data/lib/karafka/params/params_batch.rb +38 -18
  67. data/lib/karafka/patches/ruby_kafka.rb +25 -12
  68. data/lib/karafka/persistence/client.rb +29 -0
  69. data/lib/karafka/persistence/consumers.rb +45 -0
  70. data/lib/karafka/persistence/topics.rb +48 -0
  71. data/lib/karafka/process.rb +5 -8
  72. data/lib/karafka/responders/builder.rb +15 -14
  73. data/lib/karafka/responders/topic.rb +6 -8
  74. data/lib/karafka/routing/builder.rb +37 -9
  75. data/lib/karafka/routing/consumer_group.rb +1 -1
  76. data/lib/karafka/routing/consumer_mapper.rb +10 -9
  77. data/lib/karafka/routing/proxy.rb +10 -1
  78. data/lib/karafka/routing/router.rb +1 -1
  79. data/lib/karafka/routing/topic.rb +8 -12
  80. data/lib/karafka/routing/topic_mapper.rb +16 -18
  81. data/lib/karafka/serialization/json/deserializer.rb +27 -0
  82. data/lib/karafka/serialization/json/serializer.rb +31 -0
  83. data/lib/karafka/server.rb +45 -24
  84. data/lib/karafka/setup/config.rb +95 -37
  85. data/lib/karafka/setup/configurators/water_drop.rb +12 -5
  86. data/lib/karafka/setup/dsl.rb +21 -0
  87. data/lib/karafka/status.rb +7 -3
  88. data/lib/karafka/templates/{application_controller.rb.example → application_consumer.rb.erb} +2 -2
  89. data/lib/karafka/templates/{application_responder.rb.example → application_responder.rb.erb} +0 -0
  90. data/lib/karafka/templates/karafka.rb.erb +92 -0
  91. data/lib/karafka/version.rb +1 -1
  92. metadata +126 -57
  93. metadata.gz.sig +0 -0
  94. data/.github/ISSUE_TEMPLATE.md +0 -2
  95. data/lib/karafka/base_controller.rb +0 -60
  96. data/lib/karafka/connection/consumer.rb +0 -121
  97. data/lib/karafka/connection/processor.rb +0 -61
  98. data/lib/karafka/controllers/callbacks.rb +0 -54
  99. data/lib/karafka/controllers/includer.rb +0 -51
  100. data/lib/karafka/controllers/responders.rb +0 -19
  101. data/lib/karafka/loader.rb +0 -29
  102. data/lib/karafka/logger.rb +0 -53
  103. data/lib/karafka/monitor.rb +0 -98
  104. data/lib/karafka/parsers/json.rb +0 -38
  105. data/lib/karafka/patches/dry_configurable.rb +0 -31
  106. data/lib/karafka/persistence/consumer.rb +0 -25
  107. data/lib/karafka/persistence/controller.rb +0 -38
  108. data/lib/karafka/schemas/config.rb +0 -21
  109. data/lib/karafka/schemas/consumer_group.rb +0 -65
  110. data/lib/karafka/schemas/consumer_group_topic.rb +0 -18
  111. data/lib/karafka/schemas/responder_usage.rb +0 -39
  112. data/lib/karafka/schemas/server_cli_options.rb +0 -43
  113. data/lib/karafka/setup/configurators/base.rb +0 -35
  114. data/lib/karafka/templates/karafka.rb.example +0 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 26ee2938706de62609da9faf4179b3071fdc9e62
4
- data.tar.gz: eedc149b1ade99a21d82f32ad3ec9009b065cc89
2
+ SHA256:
3
+ metadata.gz: ffe10d1ca48b0b218191231ec6969f3a767f5a1a4010dca0ef00fa44c2eaab67
4
+ data.tar.gz: 27d1b52ba3782b562176b7a6de73563bdd48c250bc0576a1821c55bfcec07bff
5
5
  SHA512:
6
- metadata.gz: 2e25b2453563d9330955248307eee910147899fefb15bc197313f79012c132f0970fede7f0a0fd50b6966267c9d7d48f82f50b75fea927baa8c01bf68ebee305
7
- data.tar.gz: 902fd68ad24eb5400976d9f6b3cc5d955617a70e0b14186e2b27e8292fcff2d59aa013231834ad679c9694eebd6809589cf98715151d89a1637d6e71e2f5a14e
6
+ metadata.gz: 85bdedfe0791c7d17abbc54ed49df83e2c9cbfb048124107d403559e72b2884909bcc5974c98a738744f80184315b2ee31cc8bd1048cc5a10230e6b6f0184e3d
7
+ data.tar.gz: 382074bee041ed27776571816a982fbd7f0af6b6f9cfa8fa393113acf1c2d4cbfb0a7573d2bcd16f2662667d1b8175546e281deb5a7b66ce30b5d9c4c19d005d
@@ -0,0 +1,2 @@
1
+ ���k�W%g
2
+ �9�RHj��ia/�ۋ#���O��#�K��rS�����d��!q�:�v��}��.��Th�-S�j�T$�.�3 �C+�
Binary file
@@ -0,0 +1,3 @@
1
+ repository_id: 'd4482d42-f6b5-44ba-a5e4-00989ac519ee'
2
+ api_key: <%= ENV['CODITSU_API_KEY'] %>
3
+ api_secret: <%= ENV['CODITSU_API_SECRET'] %>
@@ -1,11 +1,9 @@
1
1
  # irbrc for Karafka console
2
- require 'karafka'
3
- require Karafka.boot_file
4
2
 
5
3
  IRB.conf[:AUTO_INDENT] = true
6
4
  IRB.conf[:SAVE_HISTORY] = 1000
7
5
  IRB.conf[:USE_READLINE] = true
8
- IRB.conf[:HISTORY_FILE] = "#{Karafka::App.root}/.irb-history"
6
+ IRB.conf[:HISTORY_FILE] = ".irb-history"
9
7
  IRB.conf[:LOAD_MODULES] = [] unless IRB.conf.key?(:LOAD_MODULES)
10
8
 
11
9
  unless IRB.conf[:LOAD_MODULES].include?('irb/completion')
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ open_collective: karafka
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report an issue with Karafka you've discovered.
4
+ ---
5
+
6
+ *Be clear, concise and precise in your description of the problem.
7
+ Open an issue with a descriptive title and a summary in grammatically correct,
8
+ complete sentences.*
9
+
10
+ *Use the template below when reporting bugs. Please, make sure that
11
+ you're running the latest stable Karafka and that the problem you're reporting
12
+ hasn't been reported (and potentially fixed) already.*
13
+
14
+ *Before filing the ticket you should replace all text above the horizontal
15
+ rule with your own words.*
16
+
17
+ --------
18
+
19
+ ## Expected behavior
20
+
21
+ Describe here how you expected Karafka to behave in this particular situation.
22
+
23
+ ## Actual behavior
24
+
25
+ Describe here what actually happened.
26
+
27
+ ## Steps to reproduce the problem
28
+
29
+ This is extremely important! Providing us with a reliable way to reproduce
30
+ a problem will expedite its solution.
31
+
32
+ ## Your setup details
33
+
34
+ Please provide kafka version and the output of `karafka info` or `bundle exec karafka info` if using Bundler.
35
+
36
+ Here's an example:
37
+
38
+ ```
39
+ $ [bundle exec] karafka info
40
+ Karafka version: 1.3.0
41
+ Ruby version: 2.6.3
42
+ Ruby-kafka version: 0.7.9
43
+ Application client id: karafka-local
44
+ Backend: inline
45
+ Batch fetching: true
46
+ Batch consuming: true
47
+ Boot file: /app/karafka/karafka.rb
48
+ Environment: development
49
+ Kafka seed brokers: ["kafka://kafka:9092"]
50
+ ```
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest new Karafka features or improvements to existing features.
4
+ ---
5
+
6
+ ## Is your feature request related to a problem? Please describe.
7
+
8
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9
+
10
+ ## Describe the solution you'd like
11
+
12
+ A clear and concise description of what you want to happen.
13
+
14
+ ## Describe alternatives you've considered
15
+
16
+ A clear and concise description of any alternative solutions or features you've considered.
17
+
18
+ ## Additional context
19
+
20
+ Add any other context or screenshots about the feature request here.
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  app.god
7
7
 
8
8
  # minimal Rails specific artifacts
9
+ /.coditsu/local.yml
9
10
  db/*.sqlite3
10
11
  /log/development.log
11
12
  /log/production.log
@@ -1 +1 @@
1
- 2.4.2
1
+ 2.6.3
@@ -1,17 +1,36 @@
1
- language: ruby
1
+ services:
2
+ - docker
3
+
4
+ dist: trusty
2
5
  sudo: false
3
- rvm:
4
- - 2.3.0
5
- - 2.3.1
6
- - 2.3.2
7
- - 2.3.3
8
- - 2.3.4
9
- - 2.4.0
10
- - 2.4.1
11
- - 2.4.2
12
- - jruby-head
13
- script: bundle exec rspec spec/
14
- env:
15
- global:
16
- - JRUBY_OPTS='--debug'
17
- install: bundle install --jobs=3 --retry=3
6
+ cache: bundler
7
+
8
+ git:
9
+ depth: false
10
+
11
+ test: &test
12
+ stage: Test
13
+ language: ruby
14
+ before_install:
15
+ - gem install bundler
16
+ - gem update --system
17
+ script: bundle exec rspec
18
+
19
+ jobs:
20
+ include:
21
+ - <<: *test
22
+ rvm: 2.6.3
23
+ - <<: *test
24
+ rvm: 2.5.5
25
+
26
+ - stage: coditsu
27
+ language: ruby
28
+ rvm: 2.6.3
29
+ before_install:
30
+ - gem update --system
31
+ - gem install bundler
32
+ script: \curl -sSL https://api.coditsu.io/run/ci | bash
33
+
34
+ stages:
35
+ - coditsu
36
+ - test
@@ -1,6 +1,154 @@
1
1
  # Karafka framework changelog
2
2
 
3
- ## 1.1.0 Unreleased
3
+ ## 1.3.0 (2019-09-09)
4
+ - Drop support for Ruby 2.4
5
+ - YARD docs tags cleanup
6
+
7
+ ## 1.3.0.rc1 (2019-07-31)
8
+ - Drop support for Kafka 0.10 in favor of native support for Kafka 0.11.
9
+ - Update ruby-kafka to the 0.7 version
10
+ - Support messages headers receiving
11
+ - Message bus unification
12
+ - Parser available in metadata
13
+ - Cleanup towards moving to a non-global state app management
14
+ - Drop Ruby 2.3 support
15
+ - Support for Ruby 2.6.3
16
+ - `Karafka::Loader` has been removed in favor of Zeitwerk
17
+ - Schemas are now contracts
18
+ - #393 - Reorganize responders - removed `multiple_usage` constrain
19
+ - #388 - ssl_client_cert_chain sync
20
+ - #300 - Store value in a value key and replace its content with parsed version - without root merge
21
+ - #331 - Disallow building groups without topics
22
+ - #340 - Instrumentation unification. Better and more consistent naming
23
+ - #340 - Procline instrumentation for a nicer process name
24
+ - #342 - Change default for `fetcher_max_queue_size` from `100` to `10` to lower max memory usage
25
+ - #345 - Cleanup exceptions names
26
+ - #341 - Split connection delegator into batch delegator and single_delegator
27
+ - #351 - Rename `#retrieve!` to `#parse!` on params and `#parsed` to `parse!` on params batch.
28
+ - #351 - Adds '#first' for params_batch that returns parsed first element from the params_batch object.
29
+ - #360 - Single params consuming mode automatically parses data specs
30
+ - #359 - Divide mark_as_consumed into mark_as_consumed and mark_as_consumed!
31
+ - #356 - Provide a `#values` for params_batch to extract only values of objects from the params_batch
32
+ - #363 - Too shallow ruby-kafka version lock
33
+ - #354 - Expose consumer heartbeat
34
+ - #377 - Remove the persistent setup in favor of persistence
35
+ - #375 - Sidekiq Backend parser mismatch
36
+ - #369 - Single consumer can support more than one topic
37
+ - #288 - Drop dependency on `activesupport` gem
38
+ - #371 - SASL over SSL
39
+ - #392 - Move params redundant data to metadata
40
+ - #335 - Metadata access from within the consumer
41
+ - #402 - Delayed reconnection upon critical failures
42
+ - #405 - `reconnect_timeout` value is now being validated
43
+ - #437 - Specs ensuring that the `#437` won't occur in the `1.3` release
44
+ - #426 - ssl client cert key password
45
+ - #444 - add certificate and private key validation
46
+ - #460 - Decouple responder "parser" (generator?) from topic.parser (benissimo)
47
+ - #463 - Split parsers into serializers / deserializers
48
+ - #473 - Support SASL OAuthBearer Authentication
49
+ - #475 - Disallow subscribing to the same topic with multiple consumers
50
+ - #485 - Setting shutdown_timeout to nil kills the app without waiting for anything
51
+ - #487 - Make listeners as instances
52
+ - #29 - Consumer class names must have the word "Consumer" in it in order to work (Sidekiq backend)
53
+ - #491 - irb is missing for console to work
54
+ - #502 - Karafka process hangs when sending multiple sigkills
55
+ - #506 - ssl_verify_hostname sync
56
+ - #483 - Upgrade dry-validation before releasing 1.3
57
+ - #492 - Use Zeitwerk for code reload in development
58
+ - #508 - Reset the consumers instances upon reconnecting to a cluster
59
+ - [#530](https://github.com/karafka/karafka/pull/530) - expose ruby and ruby-kafka version
60
+ - [534](https://github.com/karafka/karafka/pull/534) - Allow to use headers in the deserializer object
61
+
62
+ ## 1.2.11
63
+ - [#470](https://github.com/karafka/karafka/issues/470) Karafka not working with dry-configurable 0.8
64
+
65
+ ## 1.2.10
66
+ - [#453](https://github.com/karafka/karafka/pull/453) require `Forwardable` module
67
+
68
+ ## 1.2.9
69
+ - Critical exceptions now will cause consumer to stop instead of retrying without a break
70
+ - #412 - Fix dry-inflector dependency lock in gemspec
71
+ - #414 - Backport to 1.2 the delayed retry upon failure
72
+ - #437 - Raw message is no longer added to params after ParserError raised
73
+
74
+ ## 1.2.8
75
+ - #408 - Responder Topic Lookup Bug on Heroku
76
+
77
+ ## 1.2.7
78
+ - Unlock Ruby-kafka version with a warning
79
+
80
+ ## 1.2.6
81
+ - Lock WaterDrop to 1.2.3
82
+ - Lock Ruby-Kafka to 0.6.x (support for 0.7 will be added in Karafka 1.3)
83
+ - #382 - Full logging with AR, etc for development mode when there is Rails integration
84
+
85
+ ## 1.2.5
86
+ - #354 - Expose consumer heartbeat
87
+ - #373 - Async producer not working properly with responders
88
+
89
+ ## 1.2.4
90
+ - #332 - Fetcher for max queue size
91
+
92
+ ## 1.2.3
93
+ - #313 - support PLAINTEXT and SSL for scheme
94
+ - #288 - drop activesupport callbacks in favor of notifications
95
+ - #320 - Pausing indefinetely with nil pause timeout doesn't work
96
+ - #318 - Partition pausing doesn't work with custom topic mappers
97
+ - Rename ConfigAdapter to ApiAdapter to better reflect what it does
98
+ - #317 - Manual offset committing doesn't work with custom topic mappers
99
+ - #319 - Support for exponential backoff in pause
100
+
101
+ ## 1.2.2
102
+ - #312 - Broken for ActiveSupport 5.2.0
103
+
104
+ ## 1.2.1
105
+ - #304 - Unification of error instrumentation event details
106
+ - #306 - Using file logger from within a trap context upon shutdown is impossible
107
+
108
+ ## 1.2.0
109
+ - Spec improvements
110
+ - #260 - Specs missing randomization
111
+ - #251 - Shutdown upon non responding (unreachable) cluster is not possible
112
+ - #258 - Investigate lowering requirements on activesupport
113
+ - #246 - Alias consumer#mark_as_consumed on controller
114
+ - #259 - Allow forcing key/partition key on responders
115
+ - #267 - Styling inconsistency
116
+ - #242 - Support setting the max bytes to fetch per request
117
+ - #247 - Support SCRAM once released
118
+ - #271 - Provide an after_init option to pass a configuration block
119
+ - #262 - Error in the monitor code for NewRelic
120
+ - #241 - Performance metrics
121
+ - #274 - Rename controllers to consumers
122
+ - #184 - Seek to
123
+ - #284 - Dynamic Params parent class
124
+ - #275 - ssl_ca_certs_from_system
125
+ - #296 - Instrument forceful exit with an error
126
+ - Replaced some of the activesupport parts with dry-inflector
127
+ - Lower ActiveSupport dependency
128
+ - Remove configurators in favor of the after_init block configurator
129
+ - Ruby 2.5.0 support
130
+ - Renamed Karafka::Connection::Processor to Karafka::Connection::Delegator to match incoming naming conventions
131
+ - Renamed Karafka::Connection::Consumer to Karafka::Connection::Client due to #274
132
+ - Removed HashWithIndifferentAccess in favor of a regular hash
133
+ - JSON parsing defaults now to string keys
134
+ - Lower memory usage due to less params data internal details
135
+ - Support multiple ```after_init``` blocks in favor of a single one
136
+ - Renamed ```received_at``` to ```receive_time``` to follow ruby-kafka and WaterDrop conventions
137
+ - Adjust internal setup to easier map Ruby-Kafka config changes
138
+ - System callbacks reorganization
139
+ - Added ```before_fetch_loop``` configuration block for early client usage (```#seek```, etc)
140
+ - Renamed ```after_fetched``` to ```after_fetch``` to normalize the naming convention
141
+ - Instrumentation on a connection delegator level
142
+ - Added ```params_batch#last``` method to retrieve last element after unparsing
143
+ - All params keys are now strings
144
+
145
+ ## 1.1.2
146
+ - #256 - Default kafka.seed_brokers configuration is created in invalid format
147
+
148
+ ## 1.1.1
149
+ - #253 - Allow providing a global per app parser in config settings
150
+
151
+ ## 1.1.0
4
152
  - Gem bump
5
153
  - Switch from Celluloid to native Thread management
6
154
  - Improved shutdown process
@@ -14,7 +162,7 @@
14
162
  - Fixed accessibility of ```#params_batch``` from the outside of the controller
15
163
  - connection_pool config options are no longer required
16
164
  - celluloid config options are no longer required
17
- - ```#perform``` is not renamed to ```#consume``` with warning level on using the old one (deprecated)
165
+ - ```#perform``` is now renamed to ```#consume``` with warning level on using the old one (deprecated)
18
166
  - #235 - Rename perform to consume
19
167
  - Upgrade to ruby-kafka 0.5
20
168
  - Due to redesign of Waterdrop concurrency setting is no longer needed
@@ -23,6 +171,7 @@
23
171
  - Renamed ```batch_consuming``` option to ```batch_fetching``` as it is not a consumption (with processing) but a process of fetching messages from Kafka. The messages is considered consumed, when it is processed.
24
172
  - Renamed ```batch_processing``` to ```batch_consuming``` to resemble Kafka concept of consuming messages.
25
173
  - Renamed ```after_received``` to ```after_fetched``` to normalize the naming conventions.
174
+ - Responders support the per topic ```async``` option.
26
175
 
27
176
  ## 1.0.1
28
177
  - #210 - LoadError: cannot load such file -- [...]/karafka.rb
@@ -4,12 +4,11 @@
4
4
 
5
5
  First, thank you for considering contributing to karafka! It's people like you that make the open source community such a great community! 😊
6
6
 
7
- We welcome any type of contribution, not only code. You can help with
7
+ We welcome any type of contribution, not only code. You can help with:
8
8
  - **QA**: file bug reports, the more details you can give the better (e.g. screenshots with the console open)
9
9
  - **Marketing**: writing blog posts, howto's, printing stickers, ...
10
10
  - **Community**: presenting the project at meetups, organizing a dedicated meetup for the local community, ...
11
11
  - **Code**: take a look at the [open issues](issues). Even if you can't write code, commenting on them, showing that you care about a given issue matters. It helps us triage them.
12
- - **Money**: we welcome financial contributions in full transparency on our [open collective](https://opencollective.com/karafka).
13
12
 
14
13
  ## Your First Contribution
15
14
 
@@ -21,13 +20,13 @@ Any code change should be submitted as a pull request. The description should ex
21
20
 
22
21
  ## Code review process
23
22
 
24
- The bigger the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge.
25
- It is also always helpful to have some context for your pull request. What was the purpose? Why does it matter to you?
23
+ Each pull request must pass all the rspec specs and meet our quality requirements.
26
24
 
27
- ## Financial contributions
25
+ To check if everything is as it should be, we use [Coditsu](https://coditsu.io) that combines multiple linters and code analyzers for both code and documentation. Once you're done with your changes, submit a pull request.
28
26
 
29
- We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/karafka).
30
- Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed.
27
+ Coditsu will automatically check your work against our quality standards. You can find your commit check results on the [builds page](https://app.coditsu.io/karafka/commit_builds) of Karafka organization.
28
+
29
+ [![coditsu](https://coditsu.io/assets/quality_bar.svg)](https://app.coditsu.io/karafka/commit_builds)
31
30
 
32
31
  ## Questions
33
32
 
data/Gemfile CHANGED
@@ -4,9 +4,9 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
- group :development, :test do
8
- gem 'waterdrop'
9
- gem 'timecop'
7
+ group :test do
8
+ gem 'byebug'
9
+ gem 'factory_bot'
10
10
  gem 'rspec'
11
11
  gem 'simplecov'
12
12
  end
@@ -1,111 +1,137 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka (1.1.0)
5
- activesupport (>= 5.0)
6
- dry-configurable (~> 0.7)
7
- dry-validation (~> 0.11)
8
- envlogic (~> 1.0)
4
+ karafka (1.3.0)
5
+ dry-configurable (~> 0.8)
6
+ dry-inflector (~> 0.1)
7
+ dry-monitor (~> 0.3)
8
+ dry-validation (~> 1.2)
9
+ envlogic (~> 1.1)
10
+ irb (~> 1.0)
9
11
  multi_json (>= 1.12)
10
12
  rake (>= 11.3)
11
- require_all (>= 1.4)
12
- ruby-kafka (>= 0.5)
13
- thor (~> 0.19)
14
- waterdrop (>= 1.0.1)
13
+ ruby-kafka (>= 0.7.8)
14
+ thor (~> 0.20)
15
+ waterdrop (~> 1.3.0)
16
+ zeitwerk (~> 2.1)
15
17
 
16
18
  GEM
17
19
  remote: https://rubygems.org/
18
20
  specs:
19
- activesupport (5.1.4)
21
+ activesupport (6.0.0)
20
22
  concurrent-ruby (~> 1.0, >= 1.0.2)
21
- i18n (~> 0.7)
23
+ i18n (>= 0.7, < 2)
22
24
  minitest (~> 5.1)
23
25
  tzinfo (~> 1.1)
24
- concurrent-ruby (1.0.5)
25
- delivery_boy (0.2.2)
26
- king_konf (~> 0.1.8)
27
- ruby-kafka (~> 0.4)
26
+ zeitwerk (~> 2.1, >= 2.1.8)
27
+ byebug (11.0.1)
28
+ concurrent-ruby (1.1.5)
29
+ delivery_boy (0.2.8)
30
+ king_konf (~> 0.3)
31
+ ruby-kafka (~> 0.7.8)
28
32
  diff-lcs (1.3)
29
- docile (1.1.5)
30
- dry-configurable (0.7.0)
33
+ digest-crc (0.4.1)
34
+ docile (1.3.2)
35
+ dry-configurable (0.8.3)
31
36
  concurrent-ruby (~> 1.0)
32
- dry-container (0.6.0)
37
+ dry-core (~> 0.4, >= 0.4.7)
38
+ dry-container (0.7.2)
33
39
  concurrent-ruby (~> 1.0)
34
40
  dry-configurable (~> 0.1, >= 0.1.3)
35
- dry-core (0.4.1)
41
+ dry-core (0.4.9)
42
+ concurrent-ruby (~> 1.0)
43
+ dry-equalizer (0.2.2)
44
+ dry-events (0.2.0)
45
+ concurrent-ruby (~> 1.0)
46
+ dry-core (~> 0.4)
47
+ dry-equalizer (~> 0.2)
48
+ dry-inflector (0.1.2)
49
+ dry-initializer (3.0.1)
50
+ dry-logic (1.0.3)
36
51
  concurrent-ruby (~> 1.0)
37
- dry-equalizer (0.2.0)
38
- dry-logic (0.4.2)
39
- dry-container (~> 0.2, >= 0.2.6)
40
52
  dry-core (~> 0.2)
41
53
  dry-equalizer (~> 0.2)
42
- dry-types (0.12.2)
54
+ dry-monitor (0.3.1)
55
+ dry-configurable (~> 0.5)
56
+ dry-core (~> 0.4)
57
+ dry-equalizer (~> 0.2)
58
+ dry-events (~> 0.1)
59
+ dry-schema (1.3.3)
43
60
  concurrent-ruby (~> 1.0)
44
- dry-configurable (~> 0.1)
45
- dry-container (~> 0.3)
46
- dry-core (~> 0.2, >= 0.2.1)
61
+ dry-configurable (~> 0.8, >= 0.8.3)
62
+ dry-core (~> 0.4)
47
63
  dry-equalizer (~> 0.2)
48
- dry-logic (~> 0.4, >= 0.4.2)
49
- inflecto (~> 0.0.0, >= 0.0.2)
50
- dry-validation (0.11.1)
64
+ dry-initializer (~> 3.0)
65
+ dry-logic (~> 1.0)
66
+ dry-types (~> 1.0)
67
+ dry-types (1.1.1)
51
68
  concurrent-ruby (~> 1.0)
52
- dry-configurable (~> 0.1, >= 0.1.3)
53
- dry-core (~> 0.2, >= 0.2.1)
69
+ dry-container (~> 0.3)
70
+ dry-core (~> 0.4, >= 0.4.4)
71
+ dry-equalizer (~> 0.2, >= 0.2.2)
72
+ dry-inflector (~> 0.1, >= 0.1.2)
73
+ dry-logic (~> 1.0, >= 1.0.2)
74
+ dry-validation (1.3.1)
75
+ concurrent-ruby (~> 1.0)
76
+ dry-container (~> 0.7, >= 0.7.1)
77
+ dry-core (~> 0.4)
54
78
  dry-equalizer (~> 0.2)
55
- dry-logic (~> 0.4, >= 0.4.0)
56
- dry-types (~> 0.12.0)
57
- envlogic (1.0.4)
58
- activesupport
59
- i18n (0.9.1)
79
+ dry-initializer (~> 3.0)
80
+ dry-schema (~> 1.0, >= 1.3.1)
81
+ envlogic (1.1.0)
82
+ dry-inflector (~> 0.1)
83
+ factory_bot (5.0.2)
84
+ activesupport (>= 4.2.0)
85
+ i18n (1.6.0)
60
86
  concurrent-ruby (~> 1.0)
61
- inflecto (0.0.2)
62
- json (2.1.0)
63
- king_konf (0.1.8)
64
- minitest (5.10.3)
65
- multi_json (1.12.2)
66
- null-logger (0.1.4)
67
- rake (12.2.1)
68
- require_all (1.4.0)
69
- rspec (3.7.0)
70
- rspec-core (~> 3.7.0)
71
- rspec-expectations (~> 3.7.0)
72
- rspec-mocks (~> 3.7.0)
73
- rspec-core (3.7.0)
74
- rspec-support (~> 3.7.0)
75
- rspec-expectations (3.7.0)
87
+ irb (1.0.0)
88
+ json (2.2.0)
89
+ king_konf (0.3.7)
90
+ minitest (5.11.3)
91
+ multi_json (1.13.1)
92
+ rake (12.3.3)
93
+ rspec (3.8.0)
94
+ rspec-core (~> 3.8.0)
95
+ rspec-expectations (~> 3.8.0)
96
+ rspec-mocks (~> 3.8.0)
97
+ rspec-core (3.8.2)
98
+ rspec-support (~> 3.8.0)
99
+ rspec-expectations (3.8.4)
76
100
  diff-lcs (>= 1.2.0, < 2.0)
77
- rspec-support (~> 3.7.0)
78
- rspec-mocks (3.7.0)
101
+ rspec-support (~> 3.8.0)
102
+ rspec-mocks (3.8.1)
79
103
  diff-lcs (>= 1.2.0, < 2.0)
80
- rspec-support (~> 3.7.0)
81
- rspec-support (3.7.0)
82
- ruby-kafka (0.5.0)
83
- simplecov (0.15.1)
84
- docile (~> 1.1.0)
104
+ rspec-support (~> 3.8.0)
105
+ rspec-support (3.8.2)
106
+ ruby-kafka (0.7.10)
107
+ digest-crc
108
+ simplecov (0.17.0)
109
+ docile (~> 1.1)
85
110
  json (>= 1.8, < 3)
86
111
  simplecov-html (~> 0.10.0)
87
112
  simplecov-html (0.10.2)
88
- thor (0.20.0)
113
+ thor (0.20.3)
89
114
  thread_safe (0.3.6)
90
- timecop (0.9.1)
91
- tzinfo (1.2.4)
115
+ tzinfo (1.2.5)
92
116
  thread_safe (~> 0.1)
93
- waterdrop (1.0.1)
94
- delivery_boy (>= 0.2.2)
95
- dry-configurable (~> 0.7)
96
- dry-validation (~> 0.11)
97
- null-logger
98
- ruby-kafka (>= 0.5)
117
+ waterdrop (1.3.0)
118
+ delivery_boy (~> 0.2)
119
+ dry-configurable (~> 0.8)
120
+ dry-monitor (~> 0.3)
121
+ dry-validation (~> 1.2)
122
+ ruby-kafka (>= 0.7.8)
123
+ zeitwerk (~> 2.1)
124
+ zeitwerk (2.1.10)
99
125
 
100
126
  PLATFORMS
101
127
  ruby
102
128
 
103
129
  DEPENDENCIES
130
+ byebug
131
+ factory_bot
104
132
  karafka!
105
133
  rspec
106
134
  simplecov
107
- timecop
108
- waterdrop
109
135
 
110
136
  BUNDLED WITH
111
- 1.15.4
137
+ 2.0.2