rabbitmq_client 0.0.0.pre → 0.0.1

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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.reek.yml +21 -0
  4. data/.travis.yml +12 -1
  5. data/README.md +129 -17
  6. data/bin/setup +4 -0
  7. data/lib/rabbitmq_client/callback.rb +47 -0
  8. data/lib/rabbitmq_client/exchange.rb +25 -0
  9. data/lib/rabbitmq_client/exchange_registry.rb +33 -0
  10. data/lib/rabbitmq_client/json_formatter.rb +29 -0
  11. data/lib/rabbitmq_client/json_log_subscriber.rb +90 -0
  12. data/lib/rabbitmq_client/lifecycle.rb +53 -0
  13. data/lib/rabbitmq_client/log_subscriber_base.rb +16 -0
  14. data/lib/rabbitmq_client/logger_builder.rb +35 -0
  15. data/lib/rabbitmq_client/message_publisher.rb +57 -0
  16. data/lib/rabbitmq_client/plain_log_subscriber.rb +64 -0
  17. data/lib/rabbitmq_client/plugin.rb +31 -0
  18. data/lib/rabbitmq_client/publisher.rb +79 -0
  19. data/lib/rabbitmq_client/tags_filter.rb +16 -0
  20. data/lib/rabbitmq_client/text_formatter.rb +42 -0
  21. data/lib/rabbitmq_client/version.rb +2 -1
  22. data/lib/rabbitmq_client.rb +99 -2
  23. data/rabbitmq_client.gemspec +1 -0
  24. data/script/travis.sh +2 -0
  25. data/spec/callback_spec.rb +31 -0
  26. data/spec/exchange_registry_spec.rb +32 -0
  27. data/spec/json_formatter_spec.rb +43 -0
  28. data/spec/json_log_subscriber_spec.rb +145 -0
  29. data/spec/lifecycle_spec.rb +78 -0
  30. data/spec/plain_log_subscriber_spec.rb +115 -0
  31. data/spec/plugin_spec.rb +12 -0
  32. data/spec/publisher_spec.rb +150 -0
  33. data/spec/rabbitmq_client_spec.rb +83 -0
  34. data/spec/support/dummy_rabbitmq_client_plugin.rb +13 -0
  35. data/spec/tags_filter_spec.rb +37 -0
  36. data/spec/text_formatter_spec.rb +45 -0
  37. metadata +57 -5
  38. data/Gemfile.lock +0 -156
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require_relative 'support/dummy_rabbitmq_client_plugin'
5
+
6
+ describe RabbitmqClient::Lifecycle do
7
+ subject { described_class.new }
8
+
9
+ let(:callback) { ->(*_args) {} }
10
+ let(:arguments) { [1, 2] }
11
+ let(:behavior) { double(Object, before!: nil, after!: nil, inside!: nil) }
12
+ let(:wrapped_block) { proc { behavior.inside! } }
13
+
14
+ describe 'before callbacks' do
15
+ before do
16
+ subject.before(:publish, &callback)
17
+ end
18
+
19
+ it 'executes before wrapped block' do
20
+ expect(callback).to receive(:call).with(*arguments).ordered
21
+ expect(behavior).to receive(:inside!).ordered
22
+ subject.run_callbacks :publish, *arguments, &wrapped_block
23
+ end
24
+ end
25
+
26
+ describe 'after callbacks' do
27
+ before do
28
+ subject.after(:publish, &callback)
29
+ end
30
+
31
+ it 'executes after wrapped block' do
32
+ expect(behavior).to receive(:inside!).ordered
33
+ expect(callback).to receive(:call).with(*arguments).ordered
34
+ subject.run_callbacks :publish, *arguments, &wrapped_block
35
+ end
36
+ end
37
+
38
+ it 'raises if callback is executed with wrong number of parameters' do
39
+ subject.before(:publish, &callback)
40
+ expect do
41
+ subject.run_callbacks(:publish, 1, 2, 3)
42
+ end.to raise_error(ArgumentError, /2 parameter/)
43
+ end
44
+
45
+ it 'raises for unsupported events' do
46
+ expect do
47
+ subject.before(:execute, &callback)
48
+ end.to raise_error(
49
+ RabbitmqClient::InvalidCallback,
50
+ /Unknown callback/
51
+ )
52
+ end
53
+
54
+ describe '#callbacks' do
55
+ before do
56
+ RabbitmqClient.instance_variable_set(:@lifecycle, nil)
57
+ RabbitmqClient.configure { |x| x[:plugins] << DummyRabbitmqClientPlugin }
58
+ end
59
+
60
+ after do
61
+ RabbitmqClient.configure { |x| x[:plugins] = [] }
62
+ RabbitmqClient.instance_variable_set(:@lifecycle, nil)
63
+ end
64
+
65
+ it 'load plugin callbacks' do
66
+ callbacks = RabbitmqClient.lifecycle.callbacks
67
+ first_callback = callbacks.values.first
68
+ last_callback = callbacks.values.last
69
+
70
+ expect(callbacks.keys).to eq [:publish]
71
+ expect(first_callback).to be_kind_of(RabbitmqClient::Callback)
72
+ expect(first_callback.instance_variable_get(:@before).count).to eq 1
73
+ expect(first_callback.instance_variable_get(:@after).count).to eq 1
74
+ expect(last_callback.instance_variable_get(:@before).count).to eq 1
75
+ expect(last_callback.instance_variable_get(:@after).count).to eq 1
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RabbitmqClient::PlainLogSubscriber do
6
+ class DummyEvent < ActiveSupport::Notifications::Event
7
+ def initialize(event_type, payload = {})
8
+ super(event_type, Time.now, Time.now, 1, payload)
9
+ end
10
+ end
11
+
12
+ let(:error) { double('error') }
13
+
14
+ before do
15
+ allow(error).to receive(:message).and_return('error')
16
+ end
17
+
18
+ describe '#publisher_created' do
19
+ it 'send logger a debug message' do
20
+ msg = 'The RabbitmqClient publisher is '\
21
+ 'created with the follwong configs {}'
22
+ expect(subject.logger).to receive(:debug).with(msg)
23
+ subject.publisher_created(DummyEvent.new(
24
+ 'publisher_created.rabbitmq_client',
25
+ {}
26
+ ))
27
+ end
28
+ end
29
+
30
+ describe '#network_error' do
31
+ let(:payload) { { error: error, options: { exchange_name: 'exchange' } } }
32
+ it 'send logger a error message' do
33
+ expect(subject.logger).to receive(:error)
34
+ .with('Failed to publish a message (error) to exchange (exchange)')
35
+ subject.network_error(DummyEvent.new(
36
+ 'network_error.rabbitmq_client',
37
+ payload
38
+ ))
39
+ end
40
+ end
41
+ describe '#overriding_configs' do
42
+ it 'send logger a debug message' do
43
+ expect(subject.logger).to receive(:debug)
44
+ .with('Overriding the follwing configs for the created publisher {}')
45
+ subject.overriding_configs(DummyEvent.new(
46
+ 'overriding_configs.rabbitmq_client',
47
+ {}
48
+ ))
49
+ end
50
+ end
51
+ describe '#publishing_message' do
52
+ it 'send logger a debug message' do
53
+ msg = 'Start>> Publishing a new message '\
54
+ '(message_id: undefined ) to the exchange (undefined)'
55
+ expect(subject.logger).to receive(:debug).with(msg)
56
+ subject.publishing_message(DummyEvent.new(
57
+ 'publishing_message.rabbitmq_client',
58
+ {}
59
+ ))
60
+ end
61
+ end
62
+ describe '#published_message' do
63
+ it 'send logger a debug message' do
64
+ msg = '<<DONE Published a message to the '\
65
+ 'exchange (undefined) with message_id: undefined'
66
+ expect(subject.logger).to receive(:info).with(msg)
67
+ subject.published_message(DummyEvent.new(
68
+ 'published_message.rabbitmq_client',
69
+ {}
70
+ ))
71
+ end
72
+ end
73
+ describe '#confirming_message' do
74
+ it 'send logger a debug message' do
75
+ expect(subject.logger).to receive(:debug)
76
+ .with('Start>> confirming a message (message_id: undefined)')
77
+ subject.confirming_message(DummyEvent.new(
78
+ 'confirming_message.rabbitmq_client',
79
+ {}
80
+ ))
81
+ end
82
+ end
83
+ describe '#message_confirmed' do
84
+ it 'send logger a debug message' do
85
+ expect(subject.logger).to receive(:debug)
86
+ .with('<<DONE confirmed a message (message_id: undefined) Successfuly')
87
+ subject.message_confirmed(DummyEvent.new(
88
+ 'message_confirmed.rabbitmq_client',
89
+ {}
90
+ ))
91
+ end
92
+ end
93
+ describe '#exhange_not_found' do
94
+ let(:payload) { { name: 'exchange' } }
95
+ it 'send logger a error message' do
96
+ expect(subject.logger).to receive(:error)
97
+ .with('The Exchange \'exchange\' cannot be found')
98
+ subject.exhange_not_found(DummyEvent.new(
99
+ 'exhange_not_found.rabbitmq_client',
100
+ payload
101
+ ))
102
+ end
103
+ end
104
+ describe '#created_exhange' do
105
+ let(:payload) { { name: 'exchange' } }
106
+ it 'send logger a debug message' do
107
+ expect(subject.logger).to receive(:debug)
108
+ .with('The exchange exchange is created successfuly')
109
+ subject.created_exhange(DummyEvent.new(
110
+ 'created_exhange.rabbitmq_client',
111
+ payload
112
+ ))
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ class EmptyRabbitmqClientPlugin < RabbitmqClient::Plugin
6
+ end
7
+
8
+ describe EmptyRabbitmqClientPlugin do
9
+ it 'raise an EmptyPlugin error' do
10
+ expect { described_class.new }.to raise_error(RabbitmqClient::EmptyPlugin)
11
+ end
12
+ end
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RabbitmqClient::Publisher do
6
+ describe '#initialize' do
7
+ context 'no configs is passed' do
8
+ let(:publisher) { described_class.new }
9
+ let(:default_session_params) do
10
+ { threaded: false, automatically_recover: false, heartbeat: 0 }
11
+ end
12
+
13
+ it 'create publisher with default values' do
14
+ expect(
15
+ publisher.instance_variable_get(:@session_params)
16
+ ).to eq default_session_params
17
+ end
18
+ end
19
+
20
+ context 'configs is passed' do
21
+ let(:session_params) do
22
+ { session_params: {
23
+ threaded: true,
24
+ automatically_recover: true,
25
+ heartbeat_publisher: 10
26
+ } }
27
+ end
28
+
29
+ let(:publisher) { described_class.new(session_params) }
30
+ let(:expected) do
31
+ { automatically_recover: false, heartbeat: 10,
32
+ heartbeat_publisher: 10, threaded: false }
33
+ end
34
+
35
+ it 'always overwrites automatically_recover and threaded' do
36
+ expect(publisher.instance_variable_get(:@session_params)).to eq expected
37
+ end
38
+
39
+ it 'use :heartbeat_publisher value for :heartbeat' do
40
+ expect(
41
+ publisher
42
+ .instance_variable_get(:@session_params)[:heartbeat]
43
+ ).to eq expected[:heartbeat_publisher]
44
+ expect(
45
+ publisher
46
+ .instance_variable_get(:@session_params)[:heartbeat_publisher]
47
+ ).to eq expected[:heartbeat_publisher]
48
+ end
49
+ end
50
+ end
51
+
52
+ describe '#publish' do
53
+ let(:bunny_session) { double('bunny_session') }
54
+ let(:bunny_channel) { double('bunny_channel') }
55
+ let(:exchange_name) { 'exchange' }
56
+ let(:exchange) { double('exchange') }
57
+ let(:confirmed) { true }
58
+
59
+ before do
60
+ allow(Bunny).to receive(:new).and_return(bunny_session)
61
+ allow(bunny_session).to receive(:start)
62
+ allow(bunny_session).to receive(:create_channel)
63
+ .and_return(bunny_channel)
64
+ allow(bunny_channel).to receive(:confirm_select)
65
+ allow(exchange).to receive(:create).and_return(exchange)
66
+ allow(exchange).to receive(:publish)
67
+ allow(exchange).to receive(:name).and_return('exchange')
68
+ allow(bunny_channel).to receive(:wait_for_confirms)
69
+ .and_return(confirmed)
70
+ allow(bunny_channel).to receive(:close)
71
+ end
72
+
73
+ context 'with minimum config' do
74
+ let(:publisher) { described_class.new }
75
+ it {
76
+ expect(publisher.publish({},
77
+ exchange_name: exchange_name)).to be_nil
78
+ }
79
+ end
80
+
81
+ context 'when confirmation fail' do
82
+ let(:exchange_registry) { double('exchange_registry') }
83
+ let(:publisher) do
84
+ described_class.new(exchange_registry: exchange_registry)
85
+ end
86
+
87
+ before do
88
+ expect(bunny_channel).to receive(:wait_for_confirms).and_return(false)
89
+ allow(bunny_channel).to receive(:nacked_set).and_return(1)
90
+ allow(bunny_channel).to receive(:unconfirmed_set).and_return(2)
91
+ allow(exchange_registry).to receive(:find).and_return(exchange)
92
+ end
93
+
94
+ it 'raises error' do
95
+ expect do
96
+ publisher.publish('message',
97
+ message_id: 'abc',
98
+ exchange_name: exchange_name)
99
+ end.to raise_error(
100
+ RabbitmqClient::MessagePublisher::ConfirmationFailed
101
+ )
102
+ end
103
+ end
104
+
105
+ context 'when exchange is not defined' do
106
+ let(:exchange_registry) { RabbitmqClient::ExchangeRegistry.new }
107
+ let(:publisher) do
108
+ described_class.new(exchange_registry: exchange_registry)
109
+ end
110
+ let(:type) { 'test' }
111
+ let(:options) { {} }
112
+
113
+ before do
114
+ exchange_registry.add(exchange_name, type, options)
115
+ allow(Bunny::Exchange).to receive(:new).and_return(exchange)
116
+ end
117
+
118
+ it 'defines exchange' do
119
+ publisher.publish('message',
120
+ message_id: 'abc',
121
+ exchange_name: exchange_name)
122
+ expect(
123
+ Bunny::Exchange
124
+ ).to have_received(:new)
125
+ .with(bunny_channel, type, exchange_name, options)
126
+ end
127
+ end
128
+
129
+ context 'when error raised' do
130
+ let(:error) { StandardError.new('network_error') }
131
+ let(:exchange_registry) { double('exchange_registry') }
132
+ let(:publisher) do
133
+ described_class.new(exchange_registry: exchange_registry)
134
+ end
135
+
136
+ before do
137
+ allow(exchange_registry).to receive(:find).and_return(exchange)
138
+ expect(bunny_channel).to receive(:wait_for_confirms).and_raise(error)
139
+ end
140
+
141
+ it 'raise an error' do
142
+ expect do
143
+ publisher.publish('message',
144
+ message_id: 'abc',
145
+ exchange_name: exchange_name)
146
+ end.to raise_error(error)
147
+ end
148
+ end
149
+ end
150
+ end
@@ -4,4 +4,87 @@ RSpec.describe RabbitmqClient do
4
4
  it 'has a version number' do
5
5
  expect(RabbitmqClient::VERSION).not_to be nil
6
6
  end
7
+
8
+ describe '.add_exchange' do
9
+ let(:name) { 'exchange' }
10
+ let(:type) { 'test_exchange' }
11
+
12
+ it 'add exchange to the registry' do
13
+ registry = RabbitmqClient.instance_variable_get(:@exchange_registry)
14
+
15
+ expect do
16
+ registry.find(name)
17
+ end.to raise_error(
18
+ RabbitmqClient::ExchangeRegistry::ExchangeNotFound
19
+ )
20
+ RabbitmqClient.add_exchange(name, type {})
21
+ exchange = registry.find(name)
22
+
23
+ expect(exchange.name).to eq(name)
24
+ expect(exchange.type).to eq(type)
25
+ expect(exchange.options).to eq({})
26
+ end
27
+ end
28
+
29
+ describe '.publish' do
30
+ let(:publisher) { double('Publisher') }
31
+ let(:options) { { headers: { store: { uuid: '123456789' } } } }
32
+
33
+ before do
34
+ allow(RabbitmqClient::Publisher).to receive(:new).and_return(publisher)
35
+ end
36
+
37
+ it 'execute the publish callbacks with the mutated headers' do
38
+ expect(publisher).to receive(:publish).with('message', options)
39
+ RabbitmqClient.publish('message', options)
40
+ end
41
+ end
42
+
43
+ describe '.lifecycle' do
44
+ it 'return a RabbitmqClient::Lifecycle instance' do
45
+ expect(RabbitmqClient.lifecycle).to be_kind_of(RabbitmqClient::Lifecycle)
46
+ end
47
+ end
48
+
49
+ describe '.logger' do
50
+ context 'with default settings' do
51
+ before do
52
+ RabbitmqClient.instance_variable_set(:@logger, nil)
53
+ end
54
+ it 'return a STDOUT logger' do
55
+ logger = RabbitmqClient.logger
56
+ logdev = logger.instance_variable_get(:@logdev)
57
+ dev = logdev.instance_variable_get(:@dev)
58
+ expect(logger).to be_kind_of(Logger)
59
+ expect(logger.level).to eq(1)
60
+ expect(dev.inspect).to eq('#<IO:<STDOUT>>')
61
+ end
62
+ end
63
+ context 'with custome settings' do
64
+ let(:logger_configs) do
65
+ {
66
+ logs_format: 'plain',
67
+ logs_to_stdout: false,
68
+ logs_level: :debug,
69
+ logs_filename: 'testing.log'
70
+ }
71
+ end
72
+ before do
73
+ RabbitmqClient.instance_variable_set(:@logger, nil)
74
+ RabbitmqClient.configure do |config|
75
+ config.logger_configs = logger_configs
76
+ end
77
+ end
78
+
79
+ it 'create file logger' do
80
+ logger = RabbitmqClient.logger
81
+ logdev = logger.instance_variable_get(:@logdev)
82
+ dev = logdev.instance_variable_get(:@dev)
83
+ expect(RabbitmqClient.config.logger_configs).to eq(logger_configs)
84
+ expect(logger.level).to eq(0)
85
+ expect(logger).to be_kind_of(Logger)
86
+ expect(dev.inspect).to eq('#<File:testing.log>')
87
+ end
88
+ end
89
+ end
7
90
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DummyRabbitmqClientPlugin < RabbitmqClient::Plugin
4
+ callbacks do |lifecycle|
5
+ lifecycle.before(:publish) do |_message, options|
6
+ options[:user_id] = '10101010'
7
+ options[:user_name] = 'JohnDeo'
8
+ end
9
+ lifecycle.after(:publish) do |_delivery_info, _properties, _payload|
10
+ options[:user_id] = nil
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RabbitmqClient::TagsFilter do
6
+ describe '.tags' do
7
+ context 'using default values' do
8
+ it 'return nil as default' do
9
+ expect(RabbitmqClient::TagsFilter.tags).to eq(nil)
10
+ end
11
+ end
12
+
13
+ context 'using RequestStore as global store' do
14
+ let(:global_store) { double('Store') }
15
+ before do
16
+ RabbitmqClient.config.global_store = global_store
17
+ end
18
+
19
+ after do
20
+ RabbitmqClient.config.global_store = nil
21
+ end
22
+
23
+ it 'return empty hash as default' do
24
+ allow(global_store).to receive(:store).and_return({})
25
+ expect(RabbitmqClient::TagsFilter.tags).to eq({})
26
+ end
27
+
28
+ it 'fillter store keys and only return whitelisted keys' do
29
+ allow(global_store).to receive(:store).and_return(
30
+ not_allowed: 'test',
31
+ 'x-request-id' => '1010'
32
+ )
33
+ expect(RabbitmqClient::TagsFilter.tags).to eq('x-request-id' => '1010')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe RabbitmqClient::TextFormatter do
6
+ subject { described_class.new }
7
+ let(:message) { 'Test loG message' }
8
+ let(:global_store) { double('Store') }
9
+ let(:time) { Time.now }
10
+ let(:formated_time) { time.strftime('%Y-%m-%dT%H:%M:%S.%6N ') }
11
+
12
+ before do
13
+ RabbitmqClient.config.global_store = global_store
14
+ end
15
+
16
+ after do
17
+ RabbitmqClient.config.global_store = nil
18
+ end
19
+
20
+ describe '.call' do
21
+ it 'formatt the log message' do
22
+ allow(global_store).to receive(:store).and_return({})
23
+ log_line = subject.call('DEBUG', time, nil, message)
24
+ expect(log_line).to match(
25
+ /D, \[#{formated_time}#\d+\] DEBUG -- : #{message}/
26
+ )
27
+ end
28
+
29
+ it 'map int severity to string' do
30
+ allow(global_store).to receive(:store).and_return({})
31
+ log_line = subject.call(0, time, nil, message)
32
+ expect(log_line).to match(
33
+ /D, \[#{formated_time}#\d+\] DEBUG -- : #{message}/
34
+ )
35
+ end
36
+
37
+ it 'add tags to the log message' do
38
+ allow(global_store).to receive(:store).and_return('x-request-id': '10')
39
+ log_line = subject.call(1, time, nil, message)
40
+ expect(log_line).to match(
41
+ /I, \[#{formated_time}#\d+\] INFO -- : \[x-request-id: 10\] #{message}/
42
+ )
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbitmq_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.pre
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Al-waleed shihadeh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2019-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 0.2.4
195
+ - !ruby/object:Gem::Dependency
196
+ name: solargraph
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 0.37.2
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 0.37.2
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: timecop
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -212,28 +226,55 @@ email:
212
226
  - 'wshihadeh dot dev at gmail dot com '
213
227
  executables:
214
228
  - console
229
+ - setup
215
230
  extensions: []
216
231
  extra_rdoc_files: []
217
232
  files:
218
233
  - ".gitignore"
219
234
  - ".overcommit.yml"
235
+ - ".reek.yml"
220
236
  - ".rspec"
221
237
  - ".rubocop.yml"
222
238
  - ".ruby-gemset"
223
239
  - ".ruby-version"
224
240
  - ".travis.yml"
225
241
  - Gemfile
226
- - Gemfile.lock
227
242
  - LICENSE.txt
228
243
  - README.md
229
244
  - Rakefile
230
245
  - bin/console
246
+ - bin/setup
231
247
  - lib/rabbitmq_client.rb
248
+ - lib/rabbitmq_client/callback.rb
249
+ - lib/rabbitmq_client/exchange.rb
250
+ - lib/rabbitmq_client/exchange_registry.rb
251
+ - lib/rabbitmq_client/json_formatter.rb
252
+ - lib/rabbitmq_client/json_log_subscriber.rb
253
+ - lib/rabbitmq_client/lifecycle.rb
254
+ - lib/rabbitmq_client/log_subscriber_base.rb
255
+ - lib/rabbitmq_client/logger_builder.rb
256
+ - lib/rabbitmq_client/message_publisher.rb
257
+ - lib/rabbitmq_client/plain_log_subscriber.rb
258
+ - lib/rabbitmq_client/plugin.rb
259
+ - lib/rabbitmq_client/publisher.rb
260
+ - lib/rabbitmq_client/tags_filter.rb
261
+ - lib/rabbitmq_client/text_formatter.rb
232
262
  - lib/rabbitmq_client/version.rb
233
263
  - rabbitmq_client.gemspec
234
264
  - script/travis.sh
265
+ - spec/callback_spec.rb
266
+ - spec/exchange_registry_spec.rb
267
+ - spec/json_formatter_spec.rb
268
+ - spec/json_log_subscriber_spec.rb
269
+ - spec/lifecycle_spec.rb
270
+ - spec/plain_log_subscriber_spec.rb
271
+ - spec/plugin_spec.rb
272
+ - spec/publisher_spec.rb
235
273
  - spec/rabbitmq_client_spec.rb
236
274
  - spec/spec_helper.rb
275
+ - spec/support/dummy_rabbitmq_client_plugin.rb
276
+ - spec/tags_filter_spec.rb
277
+ - spec/text_formatter_spec.rb
237
278
  homepage: https://github.com/wshihadeh/rabbitmq_client
238
279
  licenses:
239
280
  - MIT
@@ -251,14 +292,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
292
  version: '0'
252
293
  required_rubygems_version: !ruby/object:Gem::Requirement
253
294
  requirements:
254
- - - ">"
295
+ - - ">="
255
296
  - !ruby/object:Gem::Version
256
- version: 1.3.1
297
+ version: '0'
257
298
  requirements: []
258
299
  rubygems_version: 3.0.3
259
300
  signing_key:
260
301
  specification_version: 4
261
302
  summary: RabbitMq client library
262
303
  test_files:
304
+ - spec/callback_spec.rb
305
+ - spec/exchange_registry_spec.rb
306
+ - spec/json_formatter_spec.rb
307
+ - spec/json_log_subscriber_spec.rb
308
+ - spec/lifecycle_spec.rb
309
+ - spec/plain_log_subscriber_spec.rb
310
+ - spec/plugin_spec.rb
311
+ - spec/publisher_spec.rb
263
312
  - spec/rabbitmq_client_spec.rb
264
313
  - spec/spec_helper.rb
314
+ - spec/support/dummy_rabbitmq_client_plugin.rb
315
+ - spec/tags_filter_spec.rb
316
+ - spec/text_formatter_spec.rb