rimless 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/documentation.yml +3 -2
  3. data/.github/workflows/test.yml +6 -9
  4. data/.rspec +2 -2
  5. data/.rubocop.yml +16 -2
  6. data/.simplecov +12 -0
  7. data/Appraisals +2 -22
  8. data/CHANGELOG.md +8 -0
  9. data/Dockerfile +2 -3
  10. data/Envfile +0 -3
  11. data/Guardfile +44 -0
  12. data/LICENSE +1 -1
  13. data/Makefile +18 -7
  14. data/Rakefile +13 -68
  15. data/doc/kafka-playground/.gitignore +2 -0
  16. data/doc/kafka-playground/Dockerfile +41 -0
  17. data/doc/kafka-playground/Gemfile +8 -0
  18. data/doc/kafka-playground/Gemfile.lock +155 -0
  19. data/doc/kafka-playground/Makefile +209 -0
  20. data/doc/kafka-playground/README.md +185 -0
  21. data/doc/kafka-playground/bin/consume-topic +7 -0
  22. data/doc/kafka-playground/bin/create-topic +42 -0
  23. data/doc/kafka-playground/bin/delete-topic +22 -0
  24. data/doc/kafka-playground/bin/list-topics +3 -0
  25. data/doc/kafka-playground/bin/produce-event +64 -0
  26. data/doc/kafka-playground/config/avro_schemas/.gitignore +1 -0
  27. data/doc/kafka-playground/config/avro_schemas/playground_app/item_v1.avsc.erb +36 -0
  28. data/doc/kafka-playground/config/avro_schemas/playground_app/payment_v1.avsc.erb +59 -0
  29. data/doc/kafka-playground/config/avro_schemas/playground_app/payment_v1_event.avsc.erb +18 -0
  30. data/doc/kafka-playground/config/docker/shell/.bash_profile +3 -0
  31. data/doc/kafka-playground/config/docker/shell/.bashrc +231 -0
  32. data/doc/kafka-playground/config/docker/shell/.config/kcat.conf +3 -0
  33. data/doc/kafka-playground/config/docker/shell/.gemrc +2 -0
  34. data/doc/kafka-playground/config/docker/shell/.inputrc +17 -0
  35. data/doc/kafka-playground/config/environment.rb +69 -0
  36. data/doc/kafka-playground/doc/assets/project.svg +68 -0
  37. data/doc/kafka-playground/docker-compose.yml +83 -0
  38. data/doc/kafka-playground/examples/rimless-produce +48 -0
  39. data/gemfiles/rails_5.2.gemfile +2 -2
  40. data/lib/rimless/configuration_handling.rb +11 -1
  41. data/lib/rimless/consumer.rb +4 -2
  42. data/lib/rimless/dependencies.rb +3 -0
  43. data/lib/rimless/kafka_helpers.rb +2 -0
  44. data/lib/rimless/karafka/avro_deserializer.rb +3 -3
  45. data/lib/rimless/rspec/helpers.rb +3 -0
  46. data/lib/rimless/rspec/matchers.rb +3 -4
  47. data/lib/rimless/rspec.rb +1 -1
  48. data/lib/rimless/tasks/consumer.rake +3 -0
  49. data/lib/rimless/tasks/generator.rake +3 -0
  50. data/lib/rimless/tasks/stats.rake +5 -2
  51. data/lib/rimless/version.rb +18 -1
  52. data/lib/rimless.rb +0 -1
  53. data/rimless.gemspec +43 -29
  54. metadata +119 -76
  55. data/gemfiles/rails_4.2.gemfile +0 -8
  56. data/gemfiles/rails_5.0.gemfile +0 -8
  57. data/gemfiles/rails_5.1.gemfile +0 -8
  58. data/gemfiles/rails_6.0.gemfile +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5763fa79c04ca9d1db4e4c75d98bb76da2ff843acdd6d4be001a85bdfb37bfc2
4
- data.tar.gz: ede22c5243eab5f54ded67dd3f7c5d9b5d8aafb02b0c0d63280341e5ca96fc29
3
+ metadata.gz: d94b5db1c219992a8e7f2470a33c5c260065d19ad9c678fdbe7c34d8d7eac5ef
4
+ data.tar.gz: 208ec10f307dc7b777b656cdeb0c5e959cbc1cc33206fe62cc7655e59823b1cd
5
5
  SHA512:
6
- metadata.gz: 5e9c10c5e6699c126aba2aafbbea3812bb429b2bbcc6337fc4b324a06ca2eaf3560fb51b59481763b37f6e8014ff66efee3be831049da3cf1179d3966a0029a5
7
- data.tar.gz: 996be359cf6113ae58dc7847351b438987af6436510c7f8da5031eaf1e4bd957737c9f0feff8acab3b336b9c7b232348cf2f9b1978e9a911da2b0f46eebca5ce
6
+ metadata.gz: 999b3384beea7efb59e9a78a12b721d15f5333ae0ed8f8dc2d5462301a179430083c6947507ca05308370257d6a822ff8b7787db08fc353e609bf00d6d0a068b
7
+ data.tar.gz: 26f9863a2d2252007027d4f3229f1c1883e0156cb12d56941fde1f203b4eb7057a7f5fb5ce5a8a76d810f923e7940a71ac198b82ec70c2c9599abbc2d5cee838
@@ -9,16 +9,17 @@ concurrency:
9
9
  jobs:
10
10
  docs:
11
11
  name: Build gem documentation
12
- runs-on: ubuntu-20.04
12
+ runs-on: ubuntu-22.04
13
13
  timeout-minutes: 5
14
14
  steps:
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v3
16
16
 
17
17
  - name: Install the correct Ruby version
18
18
  uses: ruby/setup-ruby@v1
19
19
  with:
20
20
  ruby-version: 2.5
21
21
  bundler-cache: true
22
+ rubygems: '3.3.26'
22
23
 
23
24
  - name: Prepare the virtual environment
24
25
  uses: hausgold/actions/ci@master
@@ -13,27 +13,24 @@ concurrency:
13
13
  jobs:
14
14
  test:
15
15
  name: 'Test the gem (Ruby ${{ matrix.ruby }}, Rails ${{ matrix.rails }})'
16
- runs-on: ubuntu-20.04
16
+ runs-on: ubuntu-22.04
17
17
  timeout-minutes: 5
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: [2.5, 2.6, 2.7]
22
- rails: [4.2, '5.0', 5.1, 5.2, '6.0']
23
- exclude:
24
- # Rails 4.2 is not compatible with Ruby 2.7
25
- - ruby: 2.7
26
- rails: 4.2
21
+ ruby: ['2.5', '2.7']
22
+ rails: ['5.2']
27
23
  env:
28
24
  BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
29
25
  steps:
30
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v3
31
27
 
32
28
  - name: Install the correct Ruby version
33
29
  uses: ruby/setup-ruby@v1
34
30
  with:
35
31
  ruby-version: ${{ matrix.ruby }}
36
32
  bundler-cache: true
33
+ rubygems: '3.3.26'
37
34
 
38
35
  - name: Prepare the virtual environment
39
36
  uses: hausgold/actions/ci@master
@@ -50,7 +47,7 @@ jobs:
50
47
 
51
48
  trigger-docs:
52
49
  name: Trigger the documentation upload
53
- runs-on: ubuntu-20.04
50
+ runs-on: ubuntu-22.04
54
51
  timeout-minutes: 2
55
52
  needs: test
56
53
  if: github.ref == 'refs/heads/master'
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
+ --backtrace
2
+ --force-color
1
3
  --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml CHANGED
@@ -1,19 +1,25 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-rails
2
4
 
3
5
  Rails:
4
6
  Enabled: true
5
7
 
6
- Documentation:
8
+ Style/Documentation:
7
9
  Enabled: true
8
10
 
9
11
  AllCops:
12
+ NewCops: enable
13
+ SuggestExtensions: false
10
14
  DisplayCopNames: true
11
15
  TargetRubyVersion: 2.5
16
+ TargetRailsVersion: 5.2
12
17
  Exclude:
13
18
  - bin/**/*
14
19
  - vendor/**/*
15
20
  - build/**/*
16
21
  - gemfiles/**/*
22
+ - doc/kafka-playground/**/*
17
23
 
18
24
  Metrics/BlockLength:
19
25
  Exclude:
@@ -23,6 +29,14 @@ Metrics/BlockLength:
23
29
  - '**/*.rake'
24
30
  - doc/**/*.rb
25
31
 
32
+ # MFA is not yet enabled for our gems yet.
33
+ Gemspec/RequireMFA:
34
+ Enabled: false
35
+
36
+ # We stay with the original Ruby Style Guide recommendation.
37
+ Layout/LineLength:
38
+ Max: 80
39
+
26
40
  # Document all the things.
27
41
  Style/DocumentationMethod:
28
42
  Enabled: true
data/.simplecov CHANGED
@@ -1,3 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov-html'
4
+ require 'simplecov_json_formatter'
5
+
6
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
7
+ [
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ SimpleCov::Formatter::JSONFormatter
10
+ ]
11
+ )
12
+
1
13
  SimpleCov.start 'test_frameworks' do
2
14
  add_filter '/vendor/bundle/'
3
15
  end
data/Appraisals CHANGED
@@ -1,26 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'rails-4.2' do
4
- gem 'activesupport', '~> 4.2.11'
5
- gem 'railties', '~> 4.2.11'
6
- end
7
-
8
- appraise 'rails-5.0' do
9
- gem 'activesupport', '~> 5.0.7'
10
- gem 'railties', '~> 5.0.7'
11
- end
12
-
13
- appraise 'rails-5.1' do
14
- gem 'activesupport', '~> 5.1.6'
15
- gem 'railties', '~> 5.1.6'
16
- end
17
-
18
3
  appraise 'rails-5.2' do
19
- gem 'activesupport', '~> 5.2.2'
20
- gem 'railties', '~> 5.2.2'
21
- end
22
-
23
- appraise 'rails-6.0' do
24
- gem 'activesupport', '~> 6.0.0'
25
- gem 'railties', '~> 6.0.0'
4
+ gem 'activesupport', '~> 5.2.0'
5
+ gem 'railties', '~> 5.2.0'
26
6
  end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### 1.3.0
2
+
3
+ * Bundler >= 2.3 is from now on required as minimal version (#19)
4
+ * Dropped support for Ruby < 2.5 (#19)
5
+ * Dropped support for Rails < 5.2 (#19)
6
+ * Updated all development/runtime gems to their latest
7
+ Ruby 2.5 compatible version (#19)
8
+
1
9
  ### 1.2.0
2
10
 
3
11
  * Added a `capture_kafka_messages` helper for RSpec (#12)
data/Dockerfile CHANGED
@@ -2,7 +2,7 @@ FROM hausgold/ruby:2.5
2
2
  MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system
5
+ RUN gem update --system '3.3.26'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,8 +11,7 @@ RUN apt-get update -yqqq && \
11
11
  ca-certificates \
12
12
  bash-completion inotify-tools && \
13
13
  echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
14
- gem install bundler -v '~> 2.0' --no-document --no-prerelease && \
15
- gem install bundler -v '~> 1.0' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.3.0' --no-document --no-prerelease
16
15
 
17
16
  # Add new web user
18
17
  RUN mkdir /app && \
data/Envfile CHANGED
@@ -1,6 +1,3 @@
1
1
  LANG=en_US.UTF-8
2
2
  LANGUAGE=en_US.UTF-8
3
3
  LC_ALL=en_US.UTF-8
4
-
5
- # Just fix this, so Appraisals with Rails 4 are working fine
6
- BUNDLER_VERSION=1.17.3
data/Guardfile ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # A sample Guardfile
4
+ # More info at https://github.com/guard/guard#readme
5
+
6
+ ## Uncomment and set this to only include directories you want to watch
7
+ (directories %w[lib spec]).select do |d|
8
+ if Dir.exist?(d)
9
+ d
10
+ else
11
+ UI.warning("Directory #{d} does not exist")
12
+ end
13
+ end
14
+
15
+ ## Note: if you are using the `directories` clause above and you are not
16
+ ## watching the project directory ('.'), then you will want to move
17
+ ## the Guardfile to a watched dir and symlink it back, e.g.
18
+ #
19
+ # $ mkdir config
20
+ # $ mv Guardfile config/
21
+ # $ ln -s config/Guardfile .
22
+ #
23
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
24
+
25
+ # NOTE: The cmd option is now required due to the increasing number of ways
26
+ # rspec may be run, below are examples of the most common uses.
27
+ # * bundler: 'bundle exec rspec'
28
+ # * bundler binstubs: 'bin/rspec'
29
+ # * spring: 'bin/rspec' (This will use spring if running and you have
30
+ # installed the spring binstubs per the docs)
31
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
32
+ # * 'just' rspec: 'rspec'
33
+
34
+ guard :rspec, cmd: 'bundle exec rspec' do
35
+ watch('spec/spec_helper.rb') { 'spec' }
36
+ watch(%r{^lib/rimless.rb}) { 'spec' }
37
+ watch(%r{^spec/.+_spec\.rb$})
38
+ watch(%r{^lib/rimless/([^\\]+)\.rb$}) do |m|
39
+ "spec/rimless/#{m[1]}_spec.rb"
40
+ end
41
+ watch(%r{^lib/rimless/([^\\]+)/(.*)\.rb$}) do |m|
42
+ "spec/rimless/#{m[1]}/#{m[2]}_spec.rb"
43
+ end
44
+ end
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 HAUSGOLD | talocasa GmbH
3
+ Copyright (c) 2023 HAUSGOLD | talocasa GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Makefile CHANGED
@@ -9,6 +9,7 @@ SHELL := bash
9
9
  # Environment switches
10
10
  MAKE_ENV ?= docker
11
11
  COMPOSE_RUN_SHELL_FLAGS ?= --rm
12
+ BASH_RUN_SHELL_FLAGS ?=
12
13
 
13
14
  # Directories
14
15
  VENDOR_DIR ?= vendor/bundle
@@ -29,7 +30,9 @@ XARGS ?= xargs
29
30
  APPRAISAL ?= appraisal
30
31
  BUNDLE ?= bundle
31
32
  GEM ?= gem
33
+ GUARD ?= guard
32
34
  RAKE ?= rake
35
+ RSPEC ?= rspec
33
36
  RUBOCOP ?= rubocop
34
37
  YARD ?= yard
35
38
 
@@ -45,7 +48,8 @@ define run-shell
45
48
  $(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
46
49
  -e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
47
50
  -e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
48
- -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
51
+ -u `$(ID) -u` test \
52
+ bash $(BASH_RUN_SHELL_FLAGS) -c 'sleep 0.1; echo; $(1)'
49
53
  endef
50
54
  else ifeq ($(MAKE_ENV),baremetal)
51
55
  define run-shell
@@ -62,6 +66,7 @@ all:
62
66
  #
63
67
  # test Run the whole test suite
64
68
  # test-style Test the code styles
69
+ # watch Watch for code changes and rerun the test suite
65
70
  #
66
71
  # docs Generate the Ruby documentation of the library
67
72
  # stats Print the code statistics (library and test suite)
@@ -71,19 +76,25 @@ all:
71
76
  # shell Run an interactive shell on the container
72
77
  # shell-irb Run an interactive IRB shell on the container
73
78
 
79
+ .interactive:
80
+ @$(eval BASH_RUN_SHELL_FLAGS = --login)
81
+
74
82
  install:
75
83
  # Install the dependencies
76
84
  @$(MKDIR) -p $(VENDOR_DIR)
77
85
  @$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
78
- @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
79
- $(GEM) install bundler -v "~> 1.0")
80
86
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) install)
81
87
 
82
88
  update:
83
89
  # Install the dependencies
84
90
  @$(MKDIR) -p $(VENDOR_DIR)
91
+ @$(call run-shell,$(BUNDLE) update)
85
92
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
86
93
 
94
+ watch: install .interactive
95
+ # Watch for code changes and rerun the test suite
96
+ @$(call run-shell,$(BUNDLE) exec $(GUARD))
97
+
87
98
  test: \
88
99
  test-specs \
89
100
  test-style
@@ -95,7 +106,7 @@ test-specs:
95
106
  $(TEST_GEMFILES): GEMFILE=$(@:test-%=%)
96
107
  $(TEST_GEMFILES):
97
108
  # Run the whole test suite ($(GEMFILE))
98
- @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RAKE))
109
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RSPEC))
99
110
 
100
111
  test-style: \
101
112
  test-style-ruby
@@ -110,8 +121,8 @@ clean:
110
121
  @$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
111
122
  @$(RM) -rf $(GEMFILES_DIR)/vendor
112
123
  @$(RM) -rf $(GEMFILES_DIR)/*.lock
113
- @$(RM) -rf pkg
114
- @$(RM) -rf coverage
124
+ @$(RM) -rf .bundle .yardoc coverage pkg Gemfile.lock doc/api \
125
+ .rspec_status
115
126
 
116
127
  clean-containers:
117
128
  # Clean running containers
@@ -122,7 +133,7 @@ endif
122
133
  clean-images:
123
134
  # Clean build images
124
135
  ifeq ($(MAKE_ENV),docker)
125
- @-$(DOCKER) images | $(GREP) rimless \
136
+ @-$(DOCKER) images | $(GREP) $(shell basename "`pwd`") \
126
137
  | $(AWK) '{ print $$3 }' \
127
138
  | $(XARGS) -rn1 $(DOCKER) rmi -f
128
139
  endif
data/Rakefile CHANGED
@@ -2,78 +2,23 @@
2
2
 
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
- require 'rails/code_statistics'
6
- require 'pp'
5
+ require 'countless/rake_tasks'
7
6
 
8
7
  RSpec::Core::RakeTask.new(:spec)
9
8
 
10
9
  task default: :spec
11
10
 
12
- # Load some railties tasks
13
- load 'rails/tasks/statistics.rake'
14
- load 'rails/tasks/annotations.rake'
15
-
16
- # Clear the default statistics directory constant
17
- #
18
- # rubocop:disable Style/MutableConstant because we define it
19
- Object.send(:remove_const, :STATS_DIRECTORIES)
20
- ::STATS_DIRECTORIES = []
21
- # rubocop:enable Style/MutableConstant
22
-
23
- # Monkey patch the Rails +CodeStatistics+ class to support configurable
24
- # patterns per path. This is reuqired to support top-level only file matches.
25
- class CodeStatistics
26
- DEFAULT_PATTERN = /^(?!\.).*?\.(rb|js|coffee|rake)$/.freeze
27
-
28
- # Pass the possible +pattern+ argument down to the
29
- # +calculate_directory_statistics+ method call.
30
- def calculate_statistics
31
- Hash[@pairs.map do |pair|
32
- [pair.first, calculate_directory_statistics(*pair[1..-1])]
33
- end]
34
- end
35
-
36
- # Match the pattern against the individual file name and the relative file
37
- # path. This allows top-level only matches.
38
- def calculate_directory_statistics(directory, pattern = DEFAULT_PATTERN)
39
- stats = CodeStatisticsCalculator.new
40
-
41
- Dir.foreach(directory) do |file_name|
42
- path = "#{directory}/#{file_name}"
43
-
44
- if File.directory?(path) && (/^\./ !~ file_name)
45
- stats.add(calculate_directory_statistics(path, pattern))
46
- elsif file_name =~ pattern || path =~ pattern
47
- stats.add_by_file_path(path)
48
- end
49
- end
50
-
51
- stats
52
- end
53
- end
54
-
55
11
  # Configure all code statistics directories
56
- vendors = [
57
- [:unshift, 'Top-levels', 'lib', %r{lib(/rimless)?/[^/]+\.rb$}],
58
- [:unshift, 'Top-levels specs', 'spec',
59
- %r{spec/rimless(_spec\.rb|/[^/]+\.rb$)}],
60
-
61
- [:unshift, 'RSpec matchers', 'lib/rimless/rspec'],
62
- [:unshift, 'RSpec matchers specs', 'spec/rimless/rspec'],
63
-
64
- [:unshift, 'Rake Tasks', 'lib/rimless/tasks'],
65
- [:unshift, 'Karafka Extensions', 'lib/rimless/karafka']
66
- ].reverse
67
-
68
- vendors.each do |method, type, dir, pattern|
69
- ::STATS_DIRECTORIES.send(method, [type, dir, pattern].compact)
70
- ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
71
- end
72
-
73
- # Setup annotations
74
- ENV['SOURCE_ANNOTATION_DIRECTORIES'] = 'spec,doc'
75
-
76
- desc 'Enumerate all annotations'
77
- task :notes do
78
- SourceAnnotationExtractor.enumerate '@?OPTIMIZE|@?FIXME|@?TODO', tag: true
12
+ Countless.configure do |config|
13
+ config.stats_base_directories = [
14
+ { name: 'Top-levels', dir: 'lib',
15
+ pattern: %r{/lib(/rimless)?/[^/]+\.rb$} },
16
+ { name: 'Top-levels specs', test: true, dir: 'spec',
17
+ pattern: %r{/spec(/rimless)?/[^/]+_spec\.rb$} },
18
+ { name: 'RSpec matchers', pattern: 'lib/rimless/rspec/**/*.rb' },
19
+ { name: 'RSpec matchers specs', test: true,
20
+ pattern: 'spec/rimless/rspec/**/*_spec.rb' },
21
+ { name: 'Rake Tasks', pattern: 'lib/rimless/tasks/**/*' },
22
+ { name: 'Karafka Extensions', pattern: 'lib/rimless/karafka/**/*.rb' }
23
+ ]
79
24
  end
@@ -0,0 +1,2 @@
1
+ log
2
+ vendor/bundle
@@ -0,0 +1,41 @@
1
+ FROM hausgold/ruby:2.5
2
+ MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
+
4
+ # Update system gem
5
+ RUN gem update --system
6
+
7
+ # Add backports repository
8
+ RUN echo 'deb http://ftp.debian.org/debian buster-backports main' \
9
+ >> /etc/apt/sources.list
10
+
11
+ # Install nodejs 16
12
+ RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
13
+
14
+ # Install system packages and the ruby bundless
15
+ RUN apt-get update -yqqq && \
16
+ apt-get install -y \
17
+ build-essential nodejs locales sudo vim \
18
+ ca-certificates jq curl cmake \
19
+ bash-completion inotify-tools && \
20
+ echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
21
+ gem install bundler --no-document --no-prerelease
22
+
23
+ # Install kcat (formerly known as kafkacat)
24
+ RUN curl -sL https://github.com/edenhill/kcat/archive/refs/tags/1.7.0.tar.gz \
25
+ | tar xfvz - -C /tmp && cd /tmp/kcat-* && ./bootstrap.sh && \
26
+ mv kcat /usr/local/bin && cd / && rm -rf /tmp/kcat-*
27
+
28
+ # Add new app user
29
+ RUN mkdir /app && \
30
+ adduser app --home /home/app --shell /bin/bash \
31
+ --disabled-password --gecos ""
32
+ ADD config/docker/shell/ /home/app/
33
+ RUN chown app:app -R /app /home/app /usr/local/bundle && \
34
+ mkdir -p /home/app/.ssh && \
35
+ sudo -HEu app bash -c 'bundle config set system "true"'
36
+
37
+ # Set the root password and grant root access to app
38
+ RUN echo 'root:root' | chpasswd
39
+ RUN echo 'app ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
40
+
41
+ WORKDIR /app
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # A bundle of opinionated Apache Kafka / Confluent Schema Registry helpers.
6
+ gem 'rimless', '~> 1.2'
7
+ # Thor is a toolkit for building powerful command-line interfaces.
8
+ gem 'thor', '~> 1.1'
@@ -0,0 +1,155 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (6.1.4.1)
5
+ concurrent-ruby (~> 1.0, >= 1.0.2)
6
+ i18n (>= 1.6, < 2)
7
+ minitest (>= 5.1)
8
+ tzinfo (~> 2.0)
9
+ zeitwerk (~> 2.3)
10
+ addressable (2.8.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ avro (1.9.2)
13
+ multi_json
14
+ avro_turf (0.11.0)
15
+ avro (>= 1.7.7, < 1.10)
16
+ excon (~> 0.45)
17
+ concurrent-ruby (1.1.9)
18
+ connection_pool (2.2.5)
19
+ crack (0.4.5)
20
+ rexml
21
+ delivery_boy (1.1.0)
22
+ king_konf (~> 1.0)
23
+ ruby-kafka (~> 1.0)
24
+ digest-crc (0.6.4)
25
+ rake (>= 12.0.0, < 14.0.0)
26
+ dry-configurable (0.12.1)
27
+ concurrent-ruby (~> 1.0)
28
+ dry-core (~> 0.5, >= 0.5.0)
29
+ dry-container (0.7.2)
30
+ concurrent-ruby (~> 1.0)
31
+ dry-configurable (~> 0.1, >= 0.1.3)
32
+ dry-core (0.6.0)
33
+ concurrent-ruby (~> 1.0)
34
+ dry-equalizer (0.3.0)
35
+ dry-events (0.3.0)
36
+ concurrent-ruby (~> 1.0)
37
+ dry-core (~> 0.5, >= 0.5)
38
+ dry-inflector (0.2.0)
39
+ dry-initializer (3.0.4)
40
+ dry-logic (1.2.0)
41
+ concurrent-ruby (~> 1.0)
42
+ dry-core (~> 0.5, >= 0.5)
43
+ dry-monitor (0.4.0)
44
+ dry-configurable (~> 0.5)
45
+ dry-core (~> 0.5, >= 0.5)
46
+ dry-events (~> 0.2)
47
+ dry-schema (1.6.2)
48
+ concurrent-ruby (~> 1.0)
49
+ dry-configurable (~> 0.8, >= 0.8.3)
50
+ dry-core (~> 0.5, >= 0.5)
51
+ dry-initializer (~> 3.0)
52
+ dry-logic (~> 1.0)
53
+ dry-types (~> 1.5)
54
+ dry-types (1.5.1)
55
+ concurrent-ruby (~> 1.0)
56
+ dry-container (~> 0.3)
57
+ dry-core (~> 0.5, >= 0.5)
58
+ dry-inflector (~> 0.1, >= 0.1.2)
59
+ dry-logic (~> 1.0, >= 1.0.2)
60
+ dry-validation (1.6.0)
61
+ concurrent-ruby (~> 1.0)
62
+ dry-container (~> 0.7, >= 0.7.1)
63
+ dry-core (~> 0.4)
64
+ dry-equalizer (~> 0.2)
65
+ dry-initializer (~> 3.0)
66
+ dry-schema (~> 1.5, >= 1.5.2)
67
+ envlogic (1.1.3)
68
+ dry-inflector (~> 0.1)
69
+ excon (0.87.0)
70
+ hashdiff (1.0.1)
71
+ i18n (1.8.10)
72
+ concurrent-ruby (~> 1.0)
73
+ io-console (0.5.9)
74
+ irb (1.3.7)
75
+ reline (>= 0.2.7)
76
+ karafka (1.4.3)
77
+ dry-configurable (~> 0.8)
78
+ dry-inflector (~> 0.1)
79
+ dry-monitor (~> 0.3)
80
+ dry-validation (~> 1.2)
81
+ envlogic (~> 1.1)
82
+ irb (~> 1.0)
83
+ rake (>= 11.3)
84
+ ruby-kafka (>= 1.0.0)
85
+ thor (>= 0.20)
86
+ waterdrop (~> 1.4.0)
87
+ zeitwerk (~> 2.1)
88
+ karafka-sidekiq-backend (1.4.1)
89
+ karafka (~> 1.4.0)
90
+ sidekiq (>= 4.2)
91
+ karafka-testing (1.4.1)
92
+ karafka (~> 1.4.0.rc2)
93
+ king_konf (1.0.0)
94
+ minitest (5.14.4)
95
+ multi_json (1.15.0)
96
+ mustermann (1.1.1)
97
+ ruby2_keywords (~> 0.0.1)
98
+ public_suffix (4.0.6)
99
+ rack (2.2.3)
100
+ rack-protection (2.1.0)
101
+ rack
102
+ rake (13.0.6)
103
+ redis (4.4.0)
104
+ reline (0.2.7)
105
+ io-console (~> 0.5)
106
+ rexml (3.2.5)
107
+ rimless (1.2.0)
108
+ activesupport (>= 4.2.0)
109
+ avro_turf (~> 0.11.0)
110
+ karafka (~> 1.4)
111
+ karafka-sidekiq-backend (~> 1.4)
112
+ karafka-testing (~> 1.4)
113
+ sinatra
114
+ sparsify (~> 1.1)
115
+ waterdrop (~> 1.2)
116
+ webmock
117
+ ruby-kafka (1.4.0)
118
+ digest-crc
119
+ ruby2_keywords (0.0.5)
120
+ sidekiq (6.2.2)
121
+ connection_pool (>= 2.2.2)
122
+ rack (~> 2.0)
123
+ redis (>= 4.2.0)
124
+ sinatra (2.1.0)
125
+ mustermann (~> 1.0)
126
+ rack (~> 2.2)
127
+ rack-protection (= 2.1.0)
128
+ tilt (~> 2.0)
129
+ sparsify (1.1.0)
130
+ thor (1.1.0)
131
+ tilt (2.0.10)
132
+ tzinfo (2.0.4)
133
+ concurrent-ruby (~> 1.0)
134
+ waterdrop (1.4.2)
135
+ delivery_boy (>= 0.2, < 2.x)
136
+ dry-configurable (~> 0.8)
137
+ dry-monitor (~> 0.3)
138
+ dry-validation (~> 1.2)
139
+ ruby-kafka (>= 0.7.8)
140
+ zeitwerk (~> 2.1)
141
+ webmock (3.14.0)
142
+ addressable (>= 2.8.0)
143
+ crack (>= 0.3.2)
144
+ hashdiff (>= 0.4.0, < 2.0.0)
145
+ zeitwerk (2.4.2)
146
+
147
+ PLATFORMS
148
+ x86_64-linux
149
+
150
+ DEPENDENCIES
151
+ rimless (~> 1.2)
152
+ thor (~> 1.1)
153
+
154
+ BUNDLED WITH
155
+ 2.2.29