karafka 2.5.3 → 2.5.4.rc1

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/config/locales/errors.yml +14 -0
  4. data/karafka.gemspec +13 -2
  5. data/lib/karafka/admin/contracts/replication.rb +149 -0
  6. data/lib/karafka/admin/replication.rb +462 -0
  7. data/lib/karafka/admin.rb +47 -2
  8. data/lib/karafka/instrumentation/logger_listener.rb +0 -2
  9. data/lib/karafka/instrumentation/vendors/appsignal/metrics_listener.rb +4 -0
  10. data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +31 -15
  11. data/lib/karafka/licenser.rb +1 -1
  12. data/lib/karafka/messages/messages.rb +32 -0
  13. data/lib/karafka/pro/cleaner/messages/messages.rb +1 -1
  14. data/lib/karafka/pro/processing/jobs_queue.rb +0 -2
  15. data/lib/karafka/pro/processing/strategies/dlq/default.rb +1 -1
  16. data/lib/karafka/pro/processing/strategies/vp/default.rb +1 -1
  17. data/lib/karafka/processing/strategies/dlq.rb +1 -1
  18. data/lib/karafka/routing/consumer_group.rb +19 -1
  19. data/lib/karafka/routing/subscription_group.rb +1 -1
  20. data/lib/karafka/routing/subscription_groups_builder.rb +17 -2
  21. data/lib/karafka/version.rb +1 -1
  22. data/lib/karafka.rb +0 -1
  23. metadata +3 -62
  24. data/.coditsu/ci.yml +0 -3
  25. data/.console_irbrc +0 -11
  26. data/.github/CODEOWNERS +0 -3
  27. data/.github/FUNDING.yml +0 -1
  28. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -43
  29. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  30. data/.github/workflows/ci_linux_ubuntu_x86_64_gnu.yml +0 -296
  31. data/.github/workflows/ci_macos_arm64.yml +0 -151
  32. data/.github/workflows/push.yml +0 -35
  33. data/.github/workflows/trigger-wiki-refresh.yml +0 -30
  34. data/.github/workflows/verify-action-pins.yml +0 -16
  35. data/.gitignore +0 -69
  36. data/.rspec +0 -7
  37. data/.ruby-gemset +0 -1
  38. data/.ruby-version +0 -1
  39. data/.yard-lint.yml +0 -174
  40. data/CODE_OF_CONDUCT.md +0 -46
  41. data/CONTRIBUTING.md +0 -32
  42. data/Gemfile +0 -29
  43. data/Gemfile.lock +0 -178
  44. data/Rakefile +0 -4
  45. data/SECURITY.md +0 -23
  46. data/bin/benchmarks +0 -99
  47. data/bin/clean_kafka +0 -43
  48. data/bin/create_token +0 -22
  49. data/bin/integrations +0 -341
  50. data/bin/record_rss +0 -50
  51. data/bin/rspecs +0 -26
  52. data/bin/scenario +0 -29
  53. data/bin/stress_many +0 -13
  54. data/bin/stress_one +0 -13
  55. data/bin/verify_kafka_warnings +0 -36
  56. data/bin/verify_license_integrity +0 -37
  57. data/bin/verify_topics_naming +0 -27
  58. data/bin/wait_for_kafka +0 -24
  59. data/docker-compose.yml +0 -25
  60. data/examples/payloads/avro/.gitkeep +0 -0
  61. data/examples/payloads/json/sample_set_01/enrollment_event.json +0 -579
  62. data/examples/payloads/json/sample_set_01/ingestion_event.json +0 -30
  63. data/examples/payloads/json/sample_set_01/transaction_event.json +0 -17
  64. data/examples/payloads/json/sample_set_01/user_event.json +0 -11
  65. data/examples/payloads/json/sample_set_02/download.json +0 -191
  66. data/examples/payloads/json/sample_set_03/event_type_1.json +0 -18
  67. data/examples/payloads/json/sample_set_03/event_type_2.json +0 -263
  68. data/examples/payloads/json/sample_set_03/event_type_3.json +0 -41
  69. data/log/.gitkeep +0 -0
  70. data/renovate.json +0 -21
@@ -1,151 +0,0 @@
1
- name: CI macOS ARM64 Swarm
2
-
3
- concurrency:
4
- group: ${{ github.workflow }}-${{ github.ref }}
5
- cancel-in-progress: true
6
-
7
- on:
8
- pull_request:
9
- branches: [ master ]
10
- schedule:
11
- - cron: '0 2 * * *'
12
-
13
- permissions:
14
- contents: read
15
-
16
- env:
17
- BUNDLE_RETRY: 6
18
- BUNDLE_JOBS: 4
19
- CONFLUENT_VERSION: "8.0.0"
20
-
21
- jobs:
22
- swarm-macos:
23
- timeout-minutes: 30
24
- strategy:
25
- fail-fast: false
26
- matrix:
27
- ruby:
28
- - '3.5.0-preview1'
29
- - '3.4'
30
- - '3.3'
31
- - '3.2'
32
- macos-version:
33
- - 'macos-14'
34
- - 'macos-15'
35
- exclude:
36
- - ruby: '3.5.0-preview1'
37
- macos-version: 'macos-14'
38
- runs-on: ${{ matrix.macos-version }}
39
- steps:
40
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
41
-
42
- - name: Remove Gemfile.lock for Ruby preview versions
43
- if: contains(matrix.ruby, 'preview')
44
- run: rm -f Gemfile.lock
45
-
46
- - name: Install Bash 4+ and Kerberos
47
- run: |
48
- brew install bash
49
- brew list krb5 &>/dev/null || brew install krb5
50
- echo "/opt/homebrew/bin" >> $GITHUB_PATH
51
- - name: Install and Start Confluent Community Kafka (KRaft)
52
- run: |
53
- brew install openjdk@17
54
- export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"
55
- export JAVA_HOME="/opt/homebrew/opt/openjdk@17"
56
-
57
- curl -O "https://packages.confluent.io/archive/8.0/confluent-community-${CONFLUENT_VERSION}.tar.gz"
58
- tar -xzf "confluent-community-${CONFLUENT_VERSION}.tar.gz"
59
-
60
- export CONFLUENT_HOME="$(pwd)/confluent-${CONFLUENT_VERSION}"
61
- export PATH="$CONFLUENT_HOME/bin:$PATH"
62
- cd "$CONFLUENT_HOME"
63
-
64
- # Find the correct server config
65
- KRAFT_CONFIG=""
66
- for config in "etc/kafka/kraft/server.properties" "config/kraft/server.properties" "etc/kafka/server.properties"; do
67
- if [ -f "$config" ]; then
68
- KRAFT_CONFIG="$config"
69
- echo "Found config: $KRAFT_CONFIG"
70
- break
71
- fi
72
- done
73
-
74
- if [ -z "$KRAFT_CONFIG" ]; then
75
- echo "❌ No server config found"
76
- exit 1
77
- fi
78
-
79
- # Configure KRaft for single-node setup
80
- cat >> "$KRAFT_CONFIG" << 'EOF'
81
-
82
- # KRaft mode configuration for single-node setup
83
- process.roles=broker,controller
84
- node.id=1
85
- controller.quorum.voters=1@127.0.0.1:9093
86
- listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://127.0.0.1:9093
87
- advertised.listeners=PLAINTEXT://127.0.0.1:9092
88
- controller.listener.names=CONTROLLER
89
- inter.broker.listener.name=PLAINTEXT
90
- log.dirs=/tmp/kraft-combined-logs
91
-
92
- # Enable simple ACL authorization for testing
93
- authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
94
- super.users=User:ANONYMOUS
95
- allow.everyone.if.no.acl.found=true
96
- EOF
97
-
98
- echo "Updated KRaft configuration"
99
-
100
- CLUSTER_ID=$(bin/kafka-storage random-uuid)
101
- bin/kafka-storage format -t "$CLUSTER_ID" -c "$KRAFT_CONFIG"
102
- bin/kafka-server-start "$KRAFT_CONFIG" &
103
-
104
- sleep 20
105
-
106
- for i in {1..30}; do
107
- if bin/kafka-topics --bootstrap-server 127.0.0.1:9092 --list >/dev/null 2>&1; then
108
- echo "✅ Confluent Community ${CONFLUENT_VERSION} (KRaft) is ready!"
109
- break
110
- fi
111
- [ $i -eq 30 ] && { echo "❌ Kafka failed to start"; exit 1; }
112
- sleep 2
113
- done
114
-
115
- - name: Remove Gemfile.lock for Ruby dev/preview versions
116
- if: contains(matrix.ruby, 'dev') || contains(matrix.ruby, 'preview') || contains(matrix.ruby, 'rc')
117
- run: rm -f Gemfile.lock
118
-
119
- - name: Set up Ruby
120
- uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
121
- with:
122
- ruby-version: ${{ matrix.ruby }}
123
- bundler-cache: true
124
- bundler: 'latest'
125
-
126
- - name: Run swarm unit specs
127
- run: bundle exec rspec spec/lib/karafka/swarm/ --tag mode:fork
128
-
129
- - name: Run all swarm integration specs
130
- env:
131
- KARAFKA_PRO_LICENSE_TOKEN: ${{ secrets.KARAFKA_PRO_LICENSE_TOKEN }}
132
- KARAFKA_PRO_USERNAME: ${{ secrets.KARAFKA_PRO_USERNAME }}
133
- KARAFKA_PRO_PASSWORD: ${{ secrets.KARAFKA_PRO_PASSWORD }}
134
- KARAFKA_PRO_VERSION: ${{ secrets.KARAFKA_PRO_VERSION }}
135
- KARAFKA_PRO_LICENSE_CHECKSUM: ${{ secrets.KARAFKA_PRO_LICENSE_CHECKSUM }}
136
- run: bin/integrations swarm
137
-
138
- ci-success-macos:
139
- name: CI macOS ARM64 Swarm Success
140
- runs-on: ubuntu-latest
141
- if: always()
142
- needs:
143
- - swarm-macos
144
- steps:
145
- - name: Check all jobs passed
146
- if: |
147
- contains(needs.*.result, 'failure') ||
148
- contains(needs.*.result, 'cancelled') ||
149
- contains(needs.*.result, 'skipped')
150
- run: exit 1
151
- - run: echo "All macOS ARM64 Swarm CI checks passed!"
@@ -1,35 +0,0 @@
1
- name: Push Gem
2
-
3
- on:
4
- push:
5
- tags:
6
- - v*
7
-
8
- permissions:
9
- contents: read
10
-
11
- jobs:
12
- push:
13
- if: github.repository_owner == 'karafka'
14
- runs-on: ubuntu-latest
15
- environment: deployment
16
-
17
- permissions:
18
- contents: write
19
- id-token: write
20
-
21
- steps:
22
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23
- with:
24
- fetch-depth: 0
25
-
26
- - name: Set up Ruby
27
- uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0
28
- with:
29
- bundler-cache: false
30
-
31
- - name: Bundle install
32
- run: |
33
- bundle install --jobs 4 --retry 3
34
-
35
- - uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b # v1.1.2
@@ -1,30 +0,0 @@
1
- name: Trigger Wiki Refresh
2
-
3
- on:
4
- release:
5
- types: [published]
6
- push:
7
- branches: [master]
8
-
9
- jobs:
10
- trigger-wiki-refresh:
11
- runs-on: ubuntu-latest
12
- environment: wiki-trigger
13
- if: github.repository_owner == 'karafka'
14
- steps:
15
- - name: Trigger wiki refresh
16
- uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4.0.0
17
- with:
18
- token: ${{ secrets.WIKI_REPO_TOKEN }}
19
- repository: karafka/wiki
20
- event-type: sync-trigger
21
- client-payload: |
22
- {
23
- "repository": "${{ github.repository }}",
24
- "event_name": "${{ github.event_name }}",
25
- "release_tag": "${{ github.event.release.tag_name || '' }}",
26
- "release_name": "${{ github.event.release.name || '' }}",
27
- "commit_sha": "${{ github.sha }}",
28
- "commit_message": "Trigger Wiki Refresh",
29
- "triggered_by": "${{ github.actor }}"
30
- }
@@ -1,16 +0,0 @@
1
- name: Verify Action Pins
2
- on:
3
- pull_request:
4
- paths:
5
- - '.github/workflows/**'
6
- jobs:
7
- verify_action_pins:
8
- runs-on: ubuntu-latest
9
- steps:
10
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
11
- - name: Check SHA pins
12
- run: |
13
- if grep -E -r "uses: .*/.*@(v[0-9]+|main|master)($|[[:space:]]|$)" --include="*.yml" --include="*.yaml" .github/workflows/ | grep -v "#"; then
14
- echo "::error::Actions should use SHA pins, not tags or branch names"
15
- exit 1
16
- fi
data/.gitignore DELETED
@@ -1,69 +0,0 @@
1
- # bundler state
2
- /.bundle
3
- /vendor/bundle/
4
- /vendor/ruby/
5
- /ruby/
6
- app.god
7
-
8
- # minimal Rails specific artifacts
9
- /.coditsu/local.yml
10
- db/*.sqlite3
11
- /log/development.log
12
- /log/production.log
13
- /log/test.log
14
- /tmp/*
15
- *.gem
16
- *.~
17
-
18
- # various artifacts
19
- **.war
20
- *.rbc
21
- *.sassc
22
- .byebug_history
23
- .redcar/
24
- .capistrano/
25
- .sass-cache
26
- /config/god/sidekiq.rb
27
- /config/puma.rb
28
- /coverage.data
29
- /coverage/
30
- /doc/api/
31
- /doc/app/
32
- /doc/yard
33
- /doc/features.html
34
- /doc/specs.html
35
- /spec/tmp/*
36
- /cache
37
- /capybara*
38
- /capybara-*.html
39
- /gems
40
- /specifications
41
- rerun.txt
42
- pickle-email-*.html
43
-
44
- # If you find yourself ignoring temporary files generated by your text editor
45
- # or operating system, you probably want to add a global ignore instead:
46
- # git config --global core.excludesfile ~/.gitignore_global
47
- #
48
- # Here are some files you may want to ignore globally:
49
-
50
- # scm revert files
51
- **.orig
52
-
53
- # Mac finder artifacts
54
- .DS_Store
55
-
56
- # Netbeans project directory
57
- /nbproject
58
-
59
- # RubyMine project files
60
- .idea
61
-
62
- # Textmate project files
63
- /*.tmproj
64
-
65
- # vim artifacts
66
- **.swp
67
-
68
- # documentation
69
- .yardoc
data/.rspec DELETED
@@ -1,7 +0,0 @@
1
- --require spec_helper
2
- # Integration specs run with their one framework, not via RSpec
3
- --exclude-pattern "spec/integrations/**/*_spec.rb"
4
- # Do not run pro at the same time as default specs as it would cause state conflicts
5
- --tag ~type:pro
6
- # Do not run fork because they need to run in isolation
7
- --tag ~mode:fork
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- karafka
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.4.7
data/.yard-lint.yml DELETED
@@ -1,174 +0,0 @@
1
- # YARD-Lint Configuration
2
- # See https://github.com/mensfeld/yard-lint for documentation
3
-
4
- # Global settings for all validators
5
- AllValidators:
6
- # YARD command-line options (applied to all validators by default)
7
- YardOptions:
8
- - --private
9
- - --protected
10
-
11
- # Global file exclusion patterns
12
- Exclude:
13
- - '\.git'
14
- - 'vendor/**/*'
15
- - 'node_modules/**/*'
16
- - 'spec/**/*'
17
- - 'test/**/*'
18
-
19
- # Exit code behavior (error, warning, convention, never)
20
- FailOnSeverity: error
21
-
22
- # Minimum documentation coverage percentage (0-100)
23
- # Fails if coverage is below this threshold
24
- MinCoverage: 99.0
25
-
26
- # Diff mode settings
27
- DiffMode:
28
- # Default base ref for --diff (auto-detects main/master if not specified)
29
- DefaultBaseRef: ~
30
-
31
- # Documentation validators
32
- Documentation/UndocumentedObjects:
33
- Description: 'Checks for classes, modules, and methods without documentation.'
34
- Enabled: true
35
- Severity: error
36
- ExcludedMethods:
37
- - 'initialize/0' # Exclude parameter-less initialize
38
- - '/^_/' # Exclude private methods (by convention)
39
-
40
- Documentation/UndocumentedMethodArguments:
41
- Description: 'Checks for method parameters without @param tags.'
42
- Enabled: true
43
- Severity: error
44
-
45
- Documentation/UndocumentedBooleanMethods:
46
- Description: 'Checks that question mark methods document their boolean return.'
47
- Enabled: true
48
- Severity: error
49
-
50
- Documentation/UndocumentedOptions:
51
- Description: 'Detects methods with options hash parameters but no @option tags.'
52
- Enabled: true
53
- Severity: error
54
-
55
- Documentation/MarkdownSyntax:
56
- Description: 'Detects common markdown syntax errors in documentation.'
57
- Enabled: true
58
- Severity: error
59
-
60
- # Tags validators
61
- Tags/Order:
62
- Description: 'Enforces consistent ordering of YARD tags.'
63
- Enabled: true
64
- Severity: error
65
- EnforcedOrder:
66
- - param
67
- - option
68
- - return
69
- - raise
70
- - example
71
-
72
- Tags/InvalidTypes:
73
- Description: 'Validates type definitions in @param, @return, @option tags.'
74
- Enabled: true
75
- Severity: error
76
- ValidatedTags:
77
- - param
78
- - option
79
- - return
80
-
81
- Tags/TypeSyntax:
82
- Description: 'Validates YARD type syntax using YARD parser.'
83
- Enabled: true
84
- Severity: error
85
- ValidatedTags:
86
- - param
87
- - option
88
- - return
89
- - yieldreturn
90
-
91
- Tags/MeaninglessTag:
92
- Description: 'Detects @param/@option tags on classes, modules, or constants.'
93
- Enabled: true
94
- Severity: error
95
- CheckedTags:
96
- - param
97
- - option
98
- InvalidObjectTypes:
99
- - class
100
- - module
101
- - constant
102
-
103
- Tags/CollectionType:
104
- Description: 'Validates Hash collection syntax consistency.'
105
- Enabled: true
106
- Severity: error
107
- EnforcedStyle: long # 'long' for Hash{K => V} (YARD standard), 'short' for {K => V}
108
- ValidatedTags:
109
- - param
110
- - option
111
- - return
112
- - yieldreturn
113
-
114
- Tags/TagTypePosition:
115
- Description: 'Validates type annotation position in tags.'
116
- Enabled: true
117
- Severity: error
118
- CheckedTags:
119
- - param
120
- - option
121
- # EnforcedStyle: 'type_after_name' (YARD standard: @param name [Type])
122
- # or 'type_first' (@param [Type] name)
123
- EnforcedStyle: type_after_name
124
-
125
- Tags/ApiTags:
126
- Description: 'Enforces @api tags on public objects.'
127
- Enabled: false # Opt-in validator
128
- Severity: error
129
- AllowedApis:
130
- - public
131
- - private
132
- - internal
133
-
134
- Tags/OptionTags:
135
- Description: 'Requires @option tags for methods with options parameters.'
136
- Enabled: true
137
- Severity: error
138
-
139
- # Warnings validators - catches YARD parser errors
140
- Warnings/UnknownTag:
141
- Description: 'Detects unknown YARD tags.'
142
- Enabled: true
143
- Severity: error
144
-
145
- Warnings/UnknownDirective:
146
- Description: 'Detects unknown YARD directives.'
147
- Enabled: true
148
- Severity: error
149
-
150
- Warnings/InvalidTagFormat:
151
- Description: 'Detects malformed tag syntax.'
152
- Enabled: true
153
- Severity: error
154
-
155
- Warnings/InvalidDirectiveFormat:
156
- Description: 'Detects malformed directive syntax.'
157
- Enabled: true
158
- Severity: error
159
-
160
- Warnings/DuplicatedParameterName:
161
- Description: 'Detects duplicate @param tags.'
162
- Enabled: true
163
- Severity: error
164
-
165
- Warnings/UnknownParameterName:
166
- Description: 'Detects @param tags for non-existent parameters.'
167
- Enabled: true
168
- Severity: error
169
-
170
- # Semantic validators
171
- Semantic/AbstractMethods:
172
- Description: 'Ensures @abstract methods do not have real implementations.'
173
- Enabled: true
174
- Severity: error
data/CODE_OF_CONDUCT.md DELETED
@@ -1,46 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
-
7
- ## Our Standards
8
-
9
- Examples of behavior that contributes to creating a positive environment include:
10
-
11
- * Using welcoming and inclusive language
12
- * Being respectful of differing viewpoints and experiences
13
- * Gracefully accepting constructive criticism
14
- * Focusing on what is best for the community
15
- * Showing empathy towards other community members
16
-
17
- Examples of unacceptable behavior by participants include:
18
-
19
- * The use of sexualized language or imagery and unwelcome sexual attention or advances
20
- * Trolling, insulting/derogatory comments, and personal or political attacks
21
- * Public or private harassment
22
- * Publishing others' private information, such as a physical or electronic address, without explicit permission
23
- * Other conduct which could reasonably be considered inappropriate in a professional setting
24
-
25
- ## Our Responsibilities
26
-
27
- Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28
-
29
- Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30
-
31
- ## Scope
32
-
33
- This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34
-
35
- ## Enforcement
36
-
37
- Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at maciej@mensfeld.pl. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38
-
39
- Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40
-
41
- ## Attribution
42
-
43
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44
-
45
- [homepage]: http://contributor-covenant.org
46
- [version]: http://contributor-covenant.org/version/1/4/
data/CONTRIBUTING.md DELETED
@@ -1,32 +0,0 @@
1
- # Contributing
2
-
3
- ## Introduction
4
-
5
- First, thank you for considering contributing to the Karafka ecosystem! It's people like you that make the open source community such a great community! 😊
6
-
7
- We welcome any type of contribution, not only code. You can help with:
8
- - **QA**: file bug reports, the more details you can give the better (e.g. screenshots with the console open)
9
- - **Marketing**: writing blog posts, howto's, printing stickers, ...
10
- - **Community**: presenting the project at meetups, organizing a dedicated meetup for the local community, ...
11
- - **Code**: take a look at the [open issues](https://github.com/karafka/karafka/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
-
13
- ## Submitting code
14
-
15
- Any code change should be submitted as a pull request. The description should explain what the code does and give steps to execute it. The pull request should also contain tests.
16
-
17
- ### Code review process
18
-
19
- Each pull request must pass all the rspec specs and meet our quality requirements.
20
-
21
- 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.
22
-
23
- ### Contributing to Pro components
24
-
25
- All of Karafka components are open-source. However, the `Pro` components are licenses under `LICENSE-COMM`.
26
-
27
- By sending a pull request to the pro components, you are agreeing to transfer the copyright of your code to Maciej Mensfeld.
28
-
29
- ## Questions
30
-
31
- If you have any questions, create an [issue](https://github.com/karafka/karafka/issues) (protip: do a quick search first to see if someone else didn't ask the same question before!).
32
- You can also reach us at contact@karafka.io.
data/Gemfile DELETED
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
6
-
7
- # Karafka gem does not require activejob, karafka-web or fugit to work
8
- # They are added here because they are part of the integration suite
9
- # Since some of those are only needed for some specs, they should never be required automatically
10
- group :integrations, :test do
11
- gem 'fugit', require: false
12
- gem 'rspec', require: false
13
- gem 'stringio'
14
- gem 'warning'
15
- end
16
-
17
- group :integrations do
18
- gem 'activejob', require: false
19
- gem 'karafka-testing', '>= 2.5.0', require: false
20
- gem 'karafka-web', '>= 0.11.1', require: false
21
- end
22
-
23
- group :test do
24
- gem 'byebug'
25
- gem 'factory_bot'
26
- gem 'ostruct'
27
- gem 'simplecov'
28
- gem 'yard-lint'
29
- end