freddy 2.8.0 → 2.9.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: d728d028687af2cb365212bcbdc4bb278b2116ff665f64aa35ee75c057126455
4
- data.tar.gz: '019059f31b8da95352ec6b66e47ec73ff762b5b8c82b912d044b6e1820f717b2'
3
+ metadata.gz: d37275d237bbe49c30c6ad3c93e40b30d9b3dc631d8f8156ec1812b051010c52
4
+ data.tar.gz: 242f0523cb85e38ed9d295f2c99dc1668b8727fb5246fde4464018160796dfc7
5
5
  SHA512:
6
- metadata.gz: 4eae3c233c958e0936d1da27dc99bc83274a2e673bc4107e2716617fd23c389a4c27632777ecefebb8a7a17a73246a3ba5c208436143d5a39b7030f446bb9e6b
7
- data.tar.gz: 17901b6c33f2a454032b23e8afb195e5f37cc1481f75f77b9f88c759f225dd4b3e1bb5a0547d6c62c0730df8d9757215ec5d2fd3c35a199a71595e07348c3277
6
+ metadata.gz: 9eabd4eb896cadfc8d43a64e4092b59ee7248b6d58e2674819951e478de8257f4e5ab4ccbffad7a0e1ca1ef3009f56a83a303fbc269711ad8fd2678ff5935606
7
+ data.tar.gz: 3572bf85e93a9a741b6366c4fcd6c9634c4487b5a3254b8a8960947393f9dc92676d084b0a98f18feb3ed5c2fe36a39415d58fb2027be146acfdf68f2c637a0e
@@ -0,0 +1 @@
1
+ * @salemove/tm-automaton
@@ -11,10 +11,10 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby-version: ['2.7']
14
+ ruby-version: ['3.2']
15
15
  services:
16
16
  rabbitmq:
17
- image: rabbitmq
17
+ image: public.ecr.aws/docker/library/rabbitmq:3.13.7
18
18
  ports:
19
19
  - 5672:5672
20
20
  options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
@@ -15,7 +15,7 @@ jobs:
15
15
 
16
16
 
17
17
  - name: Release Gem
18
- uses: discourse/publish-rubygems-action@ec5415e2cc3509a5cc8c4eef9499cf3fb05f8391
18
+ uses: discourse/publish-rubygems-action@4bd305c65315cb691bad1e8de97a87aaf29a0a85
19
19
  env:
20
20
  RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
21
21
  RELEASE_COMMAND: rake release
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7
1
+ 3.3.6
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,9 @@
1
+ # Contributing to freddy
2
+
3
+ We currently do not accept any contributions from external sources.
4
+
5
+ The code is still open source and if you wish to add any changes, feel free to fork it and add changes to your fork.
6
+
7
+ Issues for any security-related bugs found are still welcome, but we offer no guarantees on whether or when they will be acted upon.
8
+
9
+ For any exceptional cases, please contact us at open-source@glia.com.
data/Gemfile CHANGED
@@ -1,10 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'bundler'
3
4
  gem 'hamster', '~> 3.0'
4
5
  gem 'opentelemetry-sdk', '~> 1.0'
5
6
  gem 'pry'
7
+ gem 'rake'
6
8
  gem 'rspec'
7
- gem 'rubocop', '~> 1.30'
8
- gem 'rubocop-rspec', '~> 2.4'
9
+ gem 'rubocop', '~> 1.61'
10
+ gem 'rubocop-rspec', '~> 3.3'
9
11
 
10
12
  gemspec
data/Gemfile.lock CHANGED
@@ -1,29 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- freddy (2.8.0)
4
+ freddy (2.9.0)
5
5
  bunny (~> 2.11)
6
6
  concurrent-ruby (~> 1.0)
7
7
  oj (~> 3.6)
8
8
  opentelemetry-api (~> 1.0)
9
9
  opentelemetry-semantic_conventions (~> 1.0)
10
- zlib (~> 1.1)
10
+ zlib (~> 3.2)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- amq-protocol (2.3.2)
16
- ast (2.4.2)
17
- bunny (2.22.0)
18
- amq-protocol (~> 2.3, >= 2.3.1)
15
+ amq-protocol (2.3.4)
16
+ ast (2.4.3)
17
+ bigdecimal (3.1.9)
18
+ bunny (2.24.0)
19
+ amq-protocol (~> 2.3)
19
20
  sorted_set (~> 1, >= 1.0.2)
20
21
  coderay (1.1.3)
21
- concurrent-ruby (1.2.2)
22
+ concurrent-ruby (1.3.1)
22
23
  diff-lcs (1.4.4)
23
24
  hamster (3.0.0)
24
25
  concurrent-ruby (~> 1.0)
26
+ json (2.9.1)
27
+ language_server-protocol (3.17.0.3)
25
28
  method_source (1.0.0)
26
- oj (3.15.0)
29
+ oj (3.16.10)
30
+ bigdecimal (>= 3.0)
31
+ ostruct (>= 0.2)
27
32
  opentelemetry-api (1.1.0)
28
33
  opentelemetry-common (0.19.6)
29
34
  opentelemetry-api (~> 1.0)
@@ -36,17 +41,19 @@ GEM
36
41
  opentelemetry-semantic_conventions
37
42
  opentelemetry-semantic_conventions (1.10.0)
38
43
  opentelemetry-api (~> 1.0)
39
- parallel (1.22.1)
40
- parser (3.1.2.0)
44
+ ostruct (0.6.1)
45
+ parallel (1.26.3)
46
+ parser (3.3.7.0)
41
47
  ast (~> 2.4.1)
48
+ racc
42
49
  pry (0.14.1)
43
50
  coderay (~> 1.1)
44
51
  method_source (~> 1.0)
52
+ racc (1.8.1)
45
53
  rainbow (3.1.1)
46
54
  rake (13.0.6)
47
55
  rbtree (0.4.6)
48
- regexp_parser (2.5.0)
49
- rexml (3.2.5)
56
+ regexp_parser (2.10.0)
50
57
  rspec (3.10.0)
51
58
  rspec-core (~> 3.10.0)
52
59
  rspec-expectations (~> 3.10.0)
@@ -60,27 +67,29 @@ GEM
60
67
  diff-lcs (>= 1.2.0, < 2.0)
61
68
  rspec-support (~> 3.10.0)
62
69
  rspec-support (3.10.2)
63
- rubocop (1.30.1)
70
+ rubocop (1.70.0)
71
+ json (~> 2.3)
72
+ language_server-protocol (>= 3.17.0)
64
73
  parallel (~> 1.10)
65
- parser (>= 3.1.0.0)
74
+ parser (>= 3.3.0.2)
66
75
  rainbow (>= 2.2.2, < 4.0)
67
- regexp_parser (>= 1.8, < 3.0)
68
- rexml (>= 3.2.5, < 4.0)
69
- rubocop-ast (>= 1.18.0, < 2.0)
76
+ regexp_parser (>= 2.9.3, < 3.0)
77
+ rubocop-ast (>= 1.36.2, < 2.0)
70
78
  ruby-progressbar (~> 1.7)
71
- unicode-display_width (>= 1.4.0, < 3.0)
72
- rubocop-ast (1.18.0)
73
- parser (>= 3.1.1.0)
74
- rubocop-rspec (2.4.0)
75
- rubocop (~> 1.0)
76
- rubocop-ast (>= 1.1.0)
77
- ruby-progressbar (1.11.0)
78
- set (1.0.3)
79
+ unicode-display_width (>= 2.4.0, < 4.0)
80
+ rubocop-ast (1.37.0)
81
+ parser (>= 3.3.1.0)
82
+ rubocop-rspec (3.4.0)
83
+ rubocop (~> 1.61)
84
+ ruby-progressbar (1.13.0)
85
+ set (1.1.2)
79
86
  sorted_set (1.0.3)
80
87
  rbtree
81
88
  set (~> 1.0)
82
- unicode-display_width (2.1.0)
83
- zlib (1.1.0)
89
+ unicode-display_width (3.1.4)
90
+ unicode-emoji (~> 4.0, >= 4.0.4)
91
+ unicode-emoji (4.0.4)
92
+ zlib (3.2.1)
84
93
 
85
94
  PLATFORMS
86
95
  ruby
@@ -94,8 +103,8 @@ DEPENDENCIES
94
103
  pry
95
104
  rake
96
105
  rspec
97
- rubocop (~> 1.30)
98
- rubocop-rspec (~> 2.4)
106
+ rubocop (~> 1.61)
107
+ rubocop-rspec (~> 3.3)
99
108
 
100
109
  BUNDLED WITH
101
110
  2.3.9
data/freddy.gemspec CHANGED
@@ -11,19 +11,16 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'API for inter-application messaging supporting acknowledgements and request-response'
12
12
  spec.license = 'MIT'
13
13
  spec.homepage = 'https://github.com/salemove/freddy'
14
- spec.required_ruby_version = '>= 2.7'
14
+ spec.required_ruby_version = '>= 3.2'
15
15
 
16
16
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency 'bundler'
21
- spec.add_development_dependency 'rake'
22
-
23
20
  spec.add_dependency 'bunny', '~> 2.11'
24
21
  spec.add_dependency 'concurrent-ruby', '~> 1.0'
25
22
  spec.add_dependency 'oj', '~> 3.6'
26
23
  spec.add_dependency 'opentelemetry-api', '~> 1.0'
27
24
  spec.add_dependency 'opentelemetry-semantic_conventions', '~> 1.0'
28
- spec.add_dependency 'zlib', '~> 1.1'
25
+ spec.add_dependency 'zlib', '~> 3.2'
29
26
  end
@@ -43,8 +43,8 @@ class Freddy
43
43
 
44
44
  def_delegators :@channel, :topic, :default_exchange, :consumers, :acknowledge, :reject
45
45
 
46
- def queue(*args)
47
- Queue.new(@channel.queue(*args))
46
+ def queue(*)
47
+ Queue.new(@channel.queue(*))
48
48
  end
49
49
 
50
50
  def on_no_route
@@ -59,8 +59,8 @@ class Freddy
59
59
  @queue = queue
60
60
  end
61
61
 
62
- def bind(*args)
63
- @queue.bind(*args)
62
+ def bind(*)
63
+ @queue.bind(*)
64
64
  self
65
65
  end
66
66
 
@@ -3,8 +3,8 @@
3
3
  class Freddy
4
4
  module Consumers
5
5
  class RespondToConsumer
6
- def self.consume(**attrs, &block)
7
- new(**attrs).consume(&block)
6
+ def self.consume(**attrs, &)
7
+ new(**attrs).consume(&)
8
8
  end
9
9
 
10
10
  def initialize(thread_pool:, destination:, channel:, handler_adapter_factory:)
@@ -7,9 +7,9 @@ class Freddy
7
7
  @logger = logger
8
8
  end
9
9
 
10
- def consume(_channel, queue, &block)
10
+ def consume(_channel, queue, &)
11
11
  @logger.debug "Consuming messages on #{queue.name}"
12
- queue.subscribe(&block)
12
+ queue.subscribe(&)
13
13
  end
14
14
  end
15
15
  end
@@ -3,8 +3,8 @@
3
3
  class Freddy
4
4
  module Consumers
5
5
  class TapIntoConsumer
6
- def self.consume(**attrs, &block)
7
- new(**attrs).consume(&block)
6
+ def self.consume(**attrs, &)
7
+ new(**attrs).consume(&)
8
8
  end
9
9
 
10
10
  def initialize(thread_pool:, patterns:, channel:, options:)
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Dir["#{File.dirname(__FILE__)}/consumers/*.rb"].sort.each(&method(:require))
3
+ Dir["#{File.dirname(__FILE__)}/consumers/*.rb"].each(&method(:require))
@@ -64,14 +64,14 @@ class Freddy
64
64
  if (request = @request_manager.delete(correlation_id))
65
65
  process_response(request, delivery)
66
66
  else
67
- message = "Got rpc response for correlation_id #{correlation_id} "\
67
+ message = "Got rpc response for correlation_id #{correlation_id} " \
68
68
  'but there is no requester'
69
69
  @logger.warn message
70
70
  end
71
71
  end
72
72
 
73
73
  def process_response(request, delivery)
74
- @logger.debug "Got response for request to #{request[:destination]} "\
74
+ @logger.debug "Got response for request to #{request[:destination]} " \
75
75
  "with correlation_id #{delivery.correlation_id}"
76
76
  request[:callback].call(delivery.payload, delivery)
77
77
  rescue InvalidRequestError => e
@@ -84,7 +84,7 @@ class Freddy
84
84
 
85
85
  def on_timeout(correlation_id, routing_key, timeout_in_seconds, span)
86
86
  proc do
87
- @logger.warn "Request timed out waiting response from #{routing_key}"\
87
+ @logger.warn "Request timed out waiting response from #{routing_key}" \
88
88
  ", correlation id #{correlation_id}, timeout #{timeout_in_seconds}s"
89
89
 
90
90
  @request_manager.delete(correlation_id)
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Dir["#{File.dirname(__FILE__)}/producers/*.rb"].sort.each(&method(:require))
3
+ Dir["#{File.dirname(__FILE__)}/producers/*.rb"].each(&method(:require))
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Freddy
4
- VERSION = '2.8.0'
4
+ VERSION = '2.9.0'
5
5
  end
data/lib/freddy.rb CHANGED
@@ -5,9 +5,9 @@ require 'concurrent'
5
5
  require 'securerandom'
6
6
  require 'opentelemetry'
7
7
  require 'opentelemetry/semantic_conventions'
8
- require_relative './freddy/version'
8
+ require_relative 'freddy/version'
9
9
 
10
- Dir["#{File.dirname(__FILE__)}/freddy/*.rb"].sort.each(&method(:require))
10
+ Dir["#{File.dirname(__FILE__)}/freddy/*.rb"].each(&method(:require))
11
11
 
12
12
  class Freddy
13
13
  FREDDY_TOPIC_EXCHANGE_NAME = 'freddy-topic'
@@ -77,7 +77,7 @@ class Freddy
77
77
  # handler.error(message: 'Can not do')
78
78
  # end
79
79
  # end
80
- def respond_to(destination, &callback)
80
+ def respond_to(destination, &)
81
81
  @logger.info "Listening for requests on #{destination}"
82
82
 
83
83
  channel = @connection.create_channel(prefetch: @prefetch_buffer_size)
@@ -85,13 +85,11 @@ class Freddy
85
85
  handler_adapter_factory = MessageHandlerAdapters::Factory.new(producer)
86
86
 
87
87
  Consumers::RespondToConsumer.consume(
88
- **{
89
- thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
90
- destination: destination,
91
- channel: channel,
92
- handler_adapter_factory: handler_adapter_factory
93
- },
94
- &callback
88
+ thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
89
+ destination: destination,
90
+ channel: channel,
91
+ handler_adapter_factory: handler_adapter_factory,
92
+ &
95
93
  )
96
94
  end
97
95
 
@@ -134,17 +132,15 @@ class Freddy
134
132
  # freddy.tap_into 'notifications.*' do |message|
135
133
  # puts "Notification showed #{message.inspect}"
136
134
  # end
137
- def tap_into(pattern_or_patterns, options = {}, &callback)
135
+ def tap_into(pattern_or_patterns, options = {}, &)
138
136
  @logger.debug "Tapping into messages that match #{pattern_or_patterns}"
139
137
 
140
138
  Consumers::TapIntoConsumer.consume(
141
- **{
142
- thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
143
- patterns: Array(pattern_or_patterns),
144
- channel: @connection.create_channel(prefetch: @prefetch_buffer_size),
145
- options: options
146
- },
147
- &callback
139
+ thread_pool: Concurrent::FixedThreadPool.new(@prefetch_buffer_size),
140
+ patterns: Array(pattern_or_patterns),
141
+ channel: @connection.create_channel(prefetch: @prefetch_buffer_size),
142
+ options: options,
143
+ &
148
144
  )
149
145
  end
150
146
 
@@ -2,9 +2,11 @@ require 'spec_helper'
2
2
  require 'hamster/experimental/mutable_set'
3
3
 
4
4
  describe 'Concurrency' do
5
+ # rubocop:disable RSpec/IndexedLet
5
6
  let(:freddy1) { Freddy.build(logger, **config) }
6
7
  let(:freddy2) { Freddy.build(logger, **config) }
7
8
  let(:freddy3) { Freddy.build(logger, **config) }
9
+ # rubocop:enable RSpec/IndexedLet
8
10
 
9
11
  after { [freddy1, freddy2, freddy3].each(&:close) }
10
12
 
@@ -39,6 +39,6 @@ describe 'Tapping into with exchange identifier' do
39
39
  channel.topic(topic).publish(message_payload, { routing_key: 'pattern.random' })
40
40
  default_sleep
41
41
 
42
- expect(received_timestamp).to eq(nil)
42
+ expect(received_timestamp).to be_nil
43
43
  end
44
44
  end
@@ -3,9 +3,10 @@ require 'hamster/experimental/mutable_set'
3
3
 
4
4
  describe 'Tapping into with group identifier' do
5
5
  let(:deliverer) { Freddy.build(logger, **config) }
6
+ # rubocop:disable RSpec/IndexedLet
6
7
  let(:responder1) { Freddy.build(logger, **config) }
7
8
  let(:responder2) { Freddy.build(logger, **config) }
8
-
9
+ # rubocop:enable RSpec/IndexedLet
9
10
  let(:destination) { random_destination }
10
11
 
11
12
  after { [deliverer, responder1, responder2].each(&:close) }
@@ -63,6 +63,7 @@ describe 'Tracing' do
63
63
  end
64
64
 
65
65
  context 'when receiving a nested traced request' do
66
+ # rubocop:disable RSpec/IndexedLet
66
67
  let(:freddy) { Freddy.build(logger, **config) }
67
68
  let(:freddy2) { Freddy.build(logger, **config) }
68
69
  let(:freddy3) { Freddy.build(logger, **config) }
@@ -70,6 +71,7 @@ describe 'Tracing' do
70
71
  let(:destination) { random_destination }
71
72
  let(:destination2) { random_destination }
72
73
  let(:destination3) { random_destination }
74
+ # rubocop:enable RSpec/IndexedLet
73
75
 
74
76
  before do
75
77
  freddy.respond_to(destination) do |_payload, msg_handler|
@@ -119,7 +121,7 @@ describe 'Tracing' do
119
121
  end
120
122
 
121
123
  context 'when receiving a broadcast' do
122
- let(:freddy) { Freddy.build(logger, config) }
124
+ let(:freddy) { Freddy.build(logger, **config) }
123
125
  let(:destination) { random_destination }
124
126
 
125
127
  before do
metadata CHANGED
@@ -1,43 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freddy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glia TechMovers
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-09-07 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
12
  - !ruby/object:Gem::Dependency
42
13
  name: bunny
43
14
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +85,14 @@ dependencies:
114
85
  requirements:
115
86
  - - "~>"
116
87
  - !ruby/object:Gem::Version
117
- version: '1.1'
88
+ version: '3.2'
118
89
  type: :runtime
119
90
  prerelease: false
120
91
  version_requirements: !ruby/object:Gem::Requirement
121
92
  requirements:
122
93
  - - "~>"
123
94
  - !ruby/object:Gem::Version
124
- version: '1.1'
95
+ version: '3.2'
125
96
  description: Messaging API
126
97
  email:
127
98
  - techmovers@salemove.com
@@ -129,6 +100,7 @@ executables: []
129
100
  extensions: []
130
101
  extra_rdoc_files: []
131
102
  files:
103
+ - ".github/CODEOWNERS"
132
104
  - ".github/workflows/ci.yml"
133
105
  - ".github/workflows/publish.yml"
134
106
  - ".gitignore"
@@ -136,6 +108,7 @@ files:
136
108
  - ".rubocop.yml"
137
109
  - ".ruby-gemset"
138
110
  - ".ruby-version"
111
+ - CONTRIBUTING.md
139
112
  - Gemfile
140
113
  - Gemfile.lock
141
114
  - LICENCE.txt
@@ -184,7 +157,6 @@ homepage: https://github.com/salemove/freddy
184
157
  licenses:
185
158
  - MIT
186
159
  metadata: {}
187
- post_install_message:
188
160
  rdoc_options: []
189
161
  require_paths:
190
162
  - lib
@@ -192,15 +164,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
164
  requirements:
193
165
  - - ">="
194
166
  - !ruby/object:Gem::Version
195
- version: '2.7'
167
+ version: '3.2'
196
168
  required_rubygems_version: !ruby/object:Gem::Requirement
197
169
  requirements:
198
170
  - - ">="
199
171
  - !ruby/object:Gem::Version
200
172
  version: '0'
201
173
  requirements: []
202
- rubygems_version: 3.1.6
203
- signing_key:
174
+ rubygems_version: 3.6.7
204
175
  specification_version: 4
205
176
  summary: API for inter-application messaging supporting acknowledgements and request-response
206
177
  test_files: []