rimless 1.13.3 → 2.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15469907299d11dc2bf6d499fcb44cac236caa2089163a742aafa7b75b160532
4
- data.tar.gz: 12e1fa610ff1b3cf116cfa0ac15b6e425358235d8f5a9de17588cd7dd88b4269
3
+ metadata.gz: dfed89b34243fa4fd3232152dfd848d95bafc3b4d4a8190708b2d1679e052457
4
+ data.tar.gz: 4d2186084e65445e3ebc300ecdf229afe35d602c91e39422ee6010ce43a8ead3
5
5
  SHA512:
6
- metadata.gz: 03befc5e9d2876c6c88351580b7f42be014bdaccf89420f17086112110324d3c0ba995afabbe93206c9ab8cd55e4e2414d0679ab2dd1552a14d62d2489bce58d
7
- data.tar.gz: 69d06e278792f340dfcc82e5d94f70ce3f2a2b3043837a749e49e3d12cc89e4994f353c953da2e0190ca46b09b326b1c8a162ef9c29de14d8989590d114be96a
6
+ metadata.gz: 2c15140a5b0f189dce414dd00e40a678c7f345dc3d91ccf9fbde5476aa4075569ff0edbadbfcc5d0f6bbc1f6a5141b9df1f54ff609638038e60272775f65ffbf
7
+ data.tar.gz: 54b265581fbacbdd6486212d1867946f472295af8002e8a60f63a21a73f784fc2684c6502ac5369edb69fd3b0148473c17ea340f8dded94577ed7e71f0fbb7dc
@@ -16,16 +16,16 @@ jobs:
16
16
  docs:
17
17
  name: Release the gem
18
18
  runs-on: ubuntu-22.04
19
- timeout-minutes: 5
19
+ timeout-minutes: 10
20
20
  steps:
21
21
  - uses: actions/checkout@v4
22
22
 
23
- - name: Install Ruby 2.7
23
+ - name: Install Ruby 3.2
24
24
  uses: ruby/setup-ruby@v1
25
25
  with:
26
- ruby-version: 2.7
26
+ ruby-version: 3.2
27
27
  bundler-cache: true
28
- rubygems: '3.4.22'
28
+ rubygems: '3.6.9'
29
29
 
30
30
  - name: Prepare the virtual environment
31
31
  uses: hausgold/actions/ci@master
@@ -18,8 +18,8 @@ jobs:
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
22
- rails: ['6.1', '7.1']
21
+ ruby: ['3.2', '3.3', '3.4']
22
+ rails: ['7.1', '7.2', '8.0', '8.1']
23
23
  env:
24
24
  BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
25
  steps:
@@ -30,7 +30,7 @@ jobs:
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
32
  bundler-cache: true
33
- rubygems: '3.4.22'
33
+ rubygems: '3.6.9'
34
34
 
35
35
  - name: Prepare the virtual environment
36
36
  uses: hausgold/actions/ci@master
data/.rubocop.yml CHANGED
@@ -12,8 +12,8 @@ AllCops:
12
12
  NewCops: enable
13
13
  SuggestExtensions: false
14
14
  DisplayCopNames: true
15
- TargetRubyVersion: 2.7
16
- TargetRailsVersion: 6.1
15
+ TargetRubyVersion: 3.2
16
+ TargetRailsVersion: 7.1
17
17
  Exclude:
18
18
  - bin/**/*
19
19
  - vendor/**/*
data/Appraisals CHANGED
@@ -1,11 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'rails-6.1' do
4
- gem 'activesupport', '~> 6.1.0'
5
- gem 'railties', '~> 6.1.0'
6
- end
7
-
8
3
  appraise 'rails-7.1' do
9
4
  gem 'activesupport', '~> 7.1.0'
10
5
  gem 'railties', '~> 7.1.0'
11
6
  end
7
+
8
+ appraise 'rails-7.2' do
9
+ gem 'activesupport', '~> 7.2.0'
10
+ gem 'railties', '~> 7.2.0'
11
+ end
12
+
13
+ appraise 'rails-8.0' do
14
+ gem 'activesupport', '~> 8.0.0'
15
+ gem 'railties', '~> 8.0.0'
16
+ end
17
+
18
+ appraise 'rails-8.1' do
19
+ gem 'activesupport', '~> 8.1.0'
20
+ gem 'railties', '~> 8.1.0'
21
+ end
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  * TODO: Replace this bullet point with an actual description of a change.
4
4
 
5
+ ### 2.1.0 (23 October 2025)
6
+
7
+ * Added support for Rails 8.1 ([#60](https://github.com/hausgold/rimless/pull/60))
8
+ * Switched from `ActiveSupport::Configurable` to a custom implementation based
9
+ on `ActiveSupport::OrderedOptions` ([#61](https://github.com/hausgold/rimless/pull/61))
10
+
11
+ ### 2.0.0 (28 June 2025)
12
+
13
+ * Corrected some RuboCop glitches ([#58](https://github.com/hausgold/rimless/pull/58))
14
+ * Drop Ruby 2 and end of life Rails (<7.1) ([#59](https://github.com/hausgold/rimless/pull/59))
15
+
5
16
  ### 1.13.3 (21 May 2025)
6
17
 
7
18
  * Corrected some RuboCop glitches ([#56](https://github.com/hausgold/rimless/pull/56))
data/Dockerfile CHANGED
@@ -1,8 +1,8 @@
1
- FROM hausgold/ruby:2.7
1
+ FROM hausgold/ruby:3.2
2
2
  LABEL org.opencontainers.image.authors="containers@hausgold.de"
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system '3.4.22'
5
+ RUN gem update --system '3.6.9'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,7 +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.4.22' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.6.9' --no-document --no-prerelease
15
15
 
16
16
  # Add new web user
17
17
  RUN mkdir /app && \
data/Gemfile CHANGED
@@ -9,11 +9,11 @@ gemspec
9
9
 
10
10
  # Development dependencies
11
11
  gem 'appraisal', '~> 2.4'
12
- gem 'bundler', '~> 2.3'
13
- gem 'countless', '~> 1.1'
12
+ gem 'bundler', '~> 2.6'
13
+ gem 'countless', '~> 2.2'
14
14
  gem 'factory_bot', '~> 6.2'
15
15
  gem 'guard-rspec', '~> 4.7'
16
- gem 'railties', '>= 6.1'
16
+ gem 'railties', '>= 7.1'
17
17
  gem 'rake', '~> 13.0'
18
18
  gem 'redcarpet', '~> 3.5'
19
19
  gem 'rspec', '~> 3.12'
data/Makefile CHANGED
@@ -117,7 +117,7 @@ test-style: \
117
117
  test-style-ruby:
118
118
  # Run the static code analyzer (rubocop)
119
119
  @$(call run-shell,$(BUNDLE) exec $(RUBOCOP) -a \
120
- || ($(TEST) $$($(RUBY_VERSION)) != '2.7' && true))
120
+ || ($(TEST) $$($(RUBY_VERSION)) != '3.2' && true))
121
121
 
122
122
  clean:
123
123
  # Clean the dependencies
@@ -8,8 +8,8 @@ RUN gem update --system '3.4.22'
8
8
  RUN echo 'deb http://archive.debian.org/debian buster-backports main' \
9
9
  >> /etc/apt/sources.list
10
10
 
11
- # Install nodejs 22
12
- RUN curl -sL https://deb.nodesource.com/setup_22.x | bash -
11
+ # Install nodejs 24
12
+ RUN curl -sL https://deb.nodesource.com/setup_24.x | bash -
13
13
 
14
14
  # Install system packages and the ruby bundless
15
15
  RUN apt-get update -yqqq && \
@@ -1,4 +1,3 @@
1
- version: "3"
2
1
  services:
3
2
  kafka:
4
3
  image: hausgold/kafka:3.9
data/docker-compose.yml CHANGED
@@ -1,4 +1,3 @@
1
- version: "3"
2
1
  services:
3
2
  test:
4
3
  build: .
@@ -3,8 +3,8 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal", "~> 2.4"
6
- gem "bundler", "~> 2.3"
7
- gem "countless", "~> 1.1"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
8
  gem "factory_bot", "~> 6.2"
9
9
  gem "guard-rspec", "~> 4.7"
10
10
  gem "railties", "~> 7.1.0"
@@ -0,0 +1,24 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "factory_bot", "~> 6.2"
9
+ gem "guard-rspec", "~> 4.7"
10
+ gem "railties", "~> 7.2.0"
11
+ gem "rake", "~> 13.0"
12
+ gem "redcarpet", "~> 3.5"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "yard", ">= 0.9.28"
21
+ gem "yard-activesupport-concern", ">= 0.0.1"
22
+ gem "activesupport", "~> 7.2.0"
23
+
24
+ gemspec path: "../"
@@ -0,0 +1,24 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "factory_bot", "~> 6.2"
9
+ gem "guard-rspec", "~> 4.7"
10
+ gem "railties", "~> 8.0.0"
11
+ gem "rake", "~> 13.0"
12
+ gem "redcarpet", "~> 3.5"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "yard", ">= 0.9.28"
21
+ gem "yard-activesupport-concern", ">= 0.0.1"
22
+ gem "activesupport", "~> 8.0.0"
23
+
24
+ gemspec path: "../"
@@ -0,0 +1,24 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "~> 2.4"
6
+ gem "bundler", "~> 2.6"
7
+ gem "countless", "~> 2.2"
8
+ gem "factory_bot", "~> 6.2"
9
+ gem "guard-rspec", "~> 4.7"
10
+ gem "railties", "~> 8.1.0"
11
+ gem "rake", "~> 13.0"
12
+ gem "redcarpet", "~> 3.5"
13
+ gem "rspec", "~> 3.12"
14
+ gem "rubocop"
15
+ gem "rubocop-rails"
16
+ gem "rubocop-rspec"
17
+ gem "simplecov", ">= 0.22"
18
+ gem "timecop", ">= 0.9.6"
19
+ gem "vcr", "~> 6.0"
20
+ gem "yard", ">= 0.9.28"
21
+ gem "yard-activesupport-concern", ">= 0.0.1"
22
+ gem "activesupport", "~> 8.1.0"
23
+
24
+ gemspec path: "../"
@@ -2,8 +2,46 @@
2
2
 
3
3
  module Rimless
4
4
  # The configuration for the rimless gem.
5
- class Configuration
6
- include ActiveSupport::Configurable
5
+ class Configuration < ActiveSupport::OrderedOptions
6
+ # Track our configurations settings (+Symbol+ keys) and their defaults as
7
+ # lazy-loaded +Proc+'s values
8
+ class_attribute :defaults,
9
+ instance_reader: true,
10
+ instance_writer: false,
11
+ instance_predicate: false,
12
+ default: {}
13
+
14
+ # Create a new +Configuration+ instance with all settings populated with
15
+ # their respective defaults.
16
+ #
17
+ # @param args [Hash{Symbol => Mixed}] additional settings which
18
+ # overwrite the defaults
19
+ # @return [Configuration] the new configuration instance
20
+ def initialize(**args)
21
+ super()
22
+ defaults.each { |key, default| self[key] = instance_exec(&default) }
23
+ merge!(**args)
24
+ end
25
+
26
+ # A simple DSL method to define new configuration accessors/settings with
27
+ # their defaults. The defaults can be retrieved with
28
+ # +Configuration.defaults+ or +Configuration.new.defaults+.
29
+ #
30
+ # @param name [Symbol, String] the name of the configuration
31
+ # accessor/setting
32
+ # @param default [Mixed, nil] a non-lazy-loaded static value, serving as a
33
+ # default value for the setting
34
+ # @param block [Proc] when given, the default value will be lazy-loaded
35
+ # (result of the Proc)
36
+ def self.config_accessor(name, default = nil, &block)
37
+ # Save the given configuration accessor default value
38
+ defaults[name.to_sym] = block || -> { default }
39
+
40
+ # Compile reader/writer methods so we don't have to go through
41
+ # +ActiveSupport::OrderedOptions#method_missing+.
42
+ define_method(name) { self[name] }
43
+ define_method("#{name}=") { |value| self[name] = value }
44
+ end
7
45
 
8
46
  # Used to identity this client on the user agent header
9
47
  config_accessor(:app_name) { Rimless.local_app_name }
@@ -67,7 +105,7 @@ module Rimless
67
105
  #
68
106
  # @param val [String, Symbol] the new job queue name
69
107
  def consumer_job_queue=(val)
70
- config.consumer_job_queue = val.to_sym
108
+ self[:consumer_job_queue] = val.to_sym
71
109
  # Refresh the consumer job queue
72
110
  Rimless::ConsumerJob.sidekiq_options(
73
111
  queue: Rimless.configuration.consumer_job_queue
@@ -125,8 +125,8 @@ module Rimless
125
125
  # needed. (eg. to set some ruby-kafka driver default settings, etc)
126
126
  #
127
127
  # @return [Rimless::ConsumerApp] our self for chaining
128
- def configure(&block)
129
- setup(&block)
128
+ def configure(&)
129
+ setup(&)
130
130
  self
131
131
  end
132
132
 
@@ -10,8 +10,8 @@ module Rimless
10
10
  # @param data [String] the Apache Avro blob
11
11
  # @param opts [Hash{Symbol => Mixed}] additional options
12
12
  # @return [Hash{String => Mixed}] the parsed payload
13
- def avro_parse(data, **opts)
14
- Rimless.avro_decode(data, **opts)
13
+ def avro_parse(data, **)
14
+ Rimless.avro_decode(data, **)
15
15
  end
16
16
 
17
17
  # A simple helper to fake a deserialized Apache Kafka message for
@@ -47,8 +47,8 @@ module Rimless
47
47
  #
48
48
  # @yield the given block to capture the messages
49
49
  # @return [Array<Hash{Symbol => Mixed}>] the captured messages
50
- def capture_kafka_messages(&block)
51
- Rimless::RSpec::Matchers::HaveSentKafkaMessage.new(nil).capture(&block)
50
+ def capture_kafka_messages(&)
51
+ Rimless::RSpec::Matchers::HaveSentKafkaMessage.new(nil).capture(&)
52
52
  end
53
53
  end
54
54
  end
@@ -137,14 +137,14 @@ module Rimless
137
137
  # @param proc [Proc] the block to evaluate
138
138
  # @return [Boolean] whenever the check was unsuccessful or not
139
139
  #
140
- # rubocop:disable Naming/PredicateName -- because we just serve
140
+ # rubocop:disable Naming/PredicatePrefix -- because we just serve
141
141
  # the RSpec API here
142
142
  def does_not_match?(proc)
143
143
  set_expected_number(:at_least, 1)
144
144
 
145
145
  !matches?(proc)
146
146
  end
147
- # rubocop:enable Naming/PredicateName
147
+ # rubocop:enable Naming/PredicatePrefix
148
148
 
149
149
  private
150
150
 
@@ -295,12 +295,12 @@ module Rimless
295
295
  #
296
296
  # @param schema [String, Symbol, nil] the Apache Avro schema to check
297
297
  #
298
- # rubocop:disable Naming/PredicateName -- because its a RSpec matcher
298
+ # rubocop:disable Naming/PredicatePrefix -- because its a RSpec matcher
299
299
  def have_sent_kafka_message(schema = nil)
300
300
  HaveSentKafkaMessage.new(schema)
301
301
  end
302
302
  alias sent_kafka_message have_sent_kafka_message
303
- # rubocop:enable Naming/PredicateName
303
+ # rubocop:enable Naming/PredicatePrefix
304
304
  end
305
305
  end
306
306
  end
@@ -3,7 +3,7 @@
3
3
  # The gem version details.
4
4
  module Rimless
5
5
  # The version of the +rimless+ gem
6
- VERSION = '1.13.3'
6
+ VERSION = '2.1.0'
7
7
 
8
8
  class << self
9
9
  # Returns the version of gem as a string.
data/lib/rimless.rb CHANGED
@@ -4,9 +4,10 @@ require 'zeitwerk'
4
4
  require 'logger'
5
5
  require 'active_support'
6
6
  require 'active_support/concern'
7
- require 'active_support/configurable'
7
+ require 'active_support/ordered_options'
8
8
  require 'active_support/time'
9
9
  require 'active_support/time_with_zone'
10
+ require 'active_support/core_ext/class/attribute'
10
11
  require 'active_support/core_ext/object'
11
12
  require 'active_support/core_ext/module'
12
13
  require 'active_support/core_ext/hash'
@@ -45,7 +46,7 @@ module Rimless
45
46
  require 'rimless/railtie' if defined? Rails
46
47
 
47
48
  # Load all initializers of the gem
48
- Dir[root_path.join('initializers/**/*.rb')].sort.each { |path| require path }
49
+ Dir[root_path.join('initializers/**/*.rb')].each { |path| require path }
49
50
 
50
51
  # Include top-level features
51
52
  include Rimless::ConfigurationHandling
data/rimless.gemspec CHANGED
@@ -33,14 +33,14 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ['lib']
35
35
 
36
- spec.required_ruby_version = '>= 2.7'
36
+ spec.required_ruby_version = '>= 3.2'
37
37
 
38
- spec.add_dependency 'activesupport', '>= 6.1'
38
+ spec.add_dependency 'activesupport', '>= 7.1'
39
39
  spec.add_dependency 'avro_turf', '~> 0.11.0'
40
40
  spec.add_dependency 'karafka', '~> 1.4', '< 1.4.15'
41
41
  spec.add_dependency 'karafka-sidekiq-backend', '~> 1.4'
42
42
  spec.add_dependency 'karafka-testing', '~> 1.4'
43
- spec.add_dependency 'mutex_m', '~> 0.3.0'
43
+ spec.add_dependency 'mutex_m', '>= 0.3'
44
44
  spec.add_dependency 'retries', '>= 0.0.5'
45
45
  spec.add_dependency 'sinatra', '>= 2.2'
46
46
  spec.add_dependency 'sparsify', '~> 1.1'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rimless
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.3
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Mayer
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-05-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '6.1'
18
+ version: '7.1'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '6.1'
25
+ version: '7.1'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: avro_turf
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -90,16 +89,16 @@ dependencies:
90
89
  name: mutex_m
91
90
  requirement: !ruby/object:Gem::Requirement
92
91
  requirements:
93
- - - "~>"
92
+ - - ">="
94
93
  - !ruby/object:Gem::Version
95
- version: 0.3.0
94
+ version: '0.3'
96
95
  type: :runtime
97
96
  prerelease: false
98
97
  version_requirements: !ruby/object:Gem::Requirement
99
98
  requirements:
100
- - - "~>"
99
+ - - ">="
101
100
  - !ruby/object:Gem::Version
102
- version: 0.3.0
101
+ version: '0.3'
103
102
  - !ruby/object:Gem::Dependency
104
103
  name: retries
105
104
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +243,9 @@ files:
244
243
  - docker-compose.yml
245
244
  - gemfiles/rails_6.1.gemfile
246
245
  - gemfiles/rails_7.1.gemfile
246
+ - gemfiles/rails_7.2.gemfile
247
+ - gemfiles/rails_8.0.gemfile
248
+ - gemfiles/rails_8.1.gemfile
247
249
  - lib/rimless.rb
248
250
  - lib/rimless/avro_helpers.rb
249
251
  - lib/rimless/avro_utils.rb
@@ -272,7 +274,6 @@ files:
272
274
  - lib/rimless/tasks/templates/karafka.rb
273
275
  - lib/rimless/version.rb
274
276
  - rimless.gemspec
275
- homepage:
276
277
  licenses:
277
278
  - MIT
278
279
  metadata:
@@ -281,7 +282,6 @@ metadata:
281
282
  changelog_uri: https://github.com/hausgold/rimless/blob/master/CHANGELOG.md
282
283
  bug_tracker_uri: https://github.com/hausgold/rimless/issues
283
284
  documentation_uri: https://www.rubydoc.info/gems/rimless
284
- post_install_message:
285
285
  rdoc_options: []
286
286
  require_paths:
287
287
  - lib
@@ -289,15 +289,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
- version: '2.7'
292
+ version: '3.2'
293
293
  required_rubygems_version: !ruby/object:Gem::Requirement
294
294
  requirements:
295
295
  - - ">="
296
296
  - !ruby/object:Gem::Version
297
297
  version: '0'
298
298
  requirements: []
299
- rubygems_version: 3.4.22
300
- signing_key:
299
+ rubygems_version: 3.6.9
301
300
  specification_version: 4
302
301
  summary: A bundle of opinionated Apache Kafka / Confluent Schema Registry helpers.
303
302
  test_files: []