msgr 1.3.2 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +83 -0
- data/.gitignore +17 -17
- data/.markdownlint.yml +22 -0
- data/.rubocop.yml +6 -2
- data/.vscode/ltex.dictionary.en-US.txt +1 -0
- data/Appraisals +13 -8
- data/CHANGELOG.md +85 -8
- data/Gemfile +1 -1
- data/README.md +17 -16
- data/gemfiles/rails_5.2.gemfile +2 -1
- data/gemfiles/rails_6.0.gemfile +2 -1
- data/gemfiles/rails_6.1.gemfile +2 -1
- data/gemfiles/rails_7.0.gemfile +15 -0
- data/gemfiles/{rails_master.gemfile → rails_head.gemfile} +2 -1
- data/lib/msgr/binding.rb +2 -2
- data/lib/msgr/channel.rb +2 -7
- data/lib/msgr/cli.rb +11 -12
- data/lib/msgr/client.rb +2 -2
- data/lib/msgr/connection.rb +2 -2
- data/lib/msgr/railtie.rb +1 -1
- data/lib/msgr/route.rb +2 -2
- data/lib/msgr/test_pool.rb +3 -3
- data/lib/msgr/version.rb +3 -3
- data/lib/msgr.rb +1 -3
- data/msgr.gemspec +6 -3
- data/renovate.json +5 -0
- data/scripts/simple_test.rb +1 -1
- data/spec/integration/dummy/app/consumers/test_consumer.rb +6 -1
- data/spec/integration/dummy/config/rabbitmq.yml +2 -0
- data/spec/integration/msgr/dispatcher_spec.rb +5 -6
- data/spec/integration/spec_helper.rb +7 -1
- data/spec/integration/test_controller_spec.rb +10 -2
- data/spec/unit/msgr/client_spec.rb +2 -2
- data/spec/unit/msgr/dispatcher_spec.rb +4 -4
- data/spec/unit/msgr/route_spec.rb +15 -1
- data/spec/unit/msgr/test_pool_spec.rb +14 -0
- data/spec/unit/msgr_spec.rb +3 -4
- metadata +14 -65
- data/.github/workflows/build.yml +0 -52
- data/.github/workflows/lint.yml +0 -20
- data/.travis.yml +0 -29
- data/spec/integration/dummy/db/test.sqlite3 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d505941f2c4bf678a5d8c5185b2d65c510fcc08aa818eca251e83e8f0225b178
|
4
|
+
data.tar.gz: 3f78955ee1074190d7fa63384294ae1b09802fcb362645b2aa52b79062ab9057
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e421518963ac9b653faaab3da418687a96b4a7b91dfd931e7afc8d3166b247c711a2e6eb199bcef6fc0e83d970308b2998a152b80e32b3bc1d7f248af5fd161d
|
7
|
+
data.tar.gz: 776b325f75779d39ad2c254020082da70ef4bf5a0dc1ec601c392546472315b29cfc0821718f94491d023077d1d84c7617b15ed808b9fa3f9b2aef1de56dd151
|
@@ -0,0 +1,83 @@
|
|
1
|
+
name: test
|
2
|
+
on: [push]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
name: Ruby ${{ matrix.ruby }} / ${{ matrix.gemfile }}
|
6
|
+
runs-on: ubuntu-22.04
|
7
|
+
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby:
|
11
|
+
- "3.2"
|
12
|
+
- "3.1"
|
13
|
+
- "3.0"
|
14
|
+
- "2.7"
|
15
|
+
gemfile:
|
16
|
+
- rails_5.2.gemfile
|
17
|
+
- rails_6.0.gemfile
|
18
|
+
- rails_6.1.gemfile
|
19
|
+
- rails_7.0.gemfile
|
20
|
+
exclude:
|
21
|
+
- ruby: "3.2"
|
22
|
+
gemfile: rails_5.2.gemfile
|
23
|
+
- ruby: "3.2"
|
24
|
+
gemfile: rails_6.0.gemfile
|
25
|
+
- ruby: "3.1"
|
26
|
+
gemfile: rails_5.2.gemfile
|
27
|
+
- ruby: "3.1"
|
28
|
+
gemfile: rails_6.0.gemfile
|
29
|
+
- ruby: "3.0"
|
30
|
+
gemfile: rails_5.2.gemfile
|
31
|
+
fail-fast: False
|
32
|
+
|
33
|
+
services:
|
34
|
+
rabbitmq:
|
35
|
+
image: rabbitmq:latest
|
36
|
+
options: >-
|
37
|
+
--health-cmd "rabbitmqctl node_health_check"
|
38
|
+
--health-interval 10s
|
39
|
+
--health-timeout 5s
|
40
|
+
--health-retries 5
|
41
|
+
ports:
|
42
|
+
- 5672:5672
|
43
|
+
|
44
|
+
env:
|
45
|
+
AMQP_SERVER: amqp://localhost:5672
|
46
|
+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
|
47
|
+
BUNDLE_JOBS: 4
|
48
|
+
BUNDLE_RETRY: 10
|
49
|
+
BUNDLE_WITHOUT: development
|
50
|
+
|
51
|
+
steps:
|
52
|
+
- uses: actions/checkout@master
|
53
|
+
|
54
|
+
- name: Setup Ruby
|
55
|
+
uses: ruby/setup-ruby@v1
|
56
|
+
with:
|
57
|
+
ruby-version: ${{ matrix.ruby }}
|
58
|
+
bundler-cache: True
|
59
|
+
|
60
|
+
- name: Run unit tests
|
61
|
+
run: bundle exec rspec -Ispec/unit --color spec/unit
|
62
|
+
|
63
|
+
- name: Run integration tests
|
64
|
+
run: bundle exec rspec -Ispec/integration --color spec/integration
|
65
|
+
|
66
|
+
rubocop:
|
67
|
+
name: rubocop
|
68
|
+
runs-on: ubuntu-22.04
|
69
|
+
|
70
|
+
env:
|
71
|
+
BUNDLE_JOBS: 4
|
72
|
+
BUNDLE_RETRY: 10
|
73
|
+
BUNDLE_WITHOUT: development
|
74
|
+
|
75
|
+
steps:
|
76
|
+
- uses: actions/checkout@master
|
77
|
+
- uses: ruby/setup-ruby@v1
|
78
|
+
with:
|
79
|
+
ruby-version: 3.0
|
80
|
+
bundler-cache: true
|
81
|
+
|
82
|
+
- name: Run rubocop
|
83
|
+
run: bundle exec rubocop --parallel --color
|
data/.gitignore
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
|
2
|
-
*.rbc
|
1
|
+
_yardoc
|
3
2
|
.bundle
|
4
3
|
.config
|
4
|
+
.idea
|
5
|
+
.rbx
|
6
|
+
.rspec
|
5
7
|
.yardoc
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
*.gem
|
9
|
+
*.iml
|
10
|
+
*.lock
|
11
|
+
*.log
|
12
|
+
*.rbc
|
9
13
|
coverage
|
10
14
|
doc/
|
15
|
+
InstalledFiles
|
11
16
|
lib/bundler/man
|
12
17
|
pkg
|
18
|
+
pmip
|
13
19
|
rdoc
|
20
|
+
spec/integration/dummy/.generators
|
21
|
+
spec/integration/dummy/.rakeTasks
|
22
|
+
spec/integration/dummy/.sass-cache
|
23
|
+
spec/integration/dummy/db/*.sqlite3
|
24
|
+
spec/integration/dummy/db/*.sqlite3-journal
|
25
|
+
spec/integration/dummy/tmp
|
14
26
|
spec/reports
|
15
27
|
test/tmp
|
16
28
|
test/version_tmp
|
17
29
|
tmp
|
18
|
-
.idea
|
19
|
-
pmip
|
20
|
-
*.iml
|
21
|
-
.rbx
|
22
|
-
.rspec
|
23
|
-
*.log
|
24
|
-
spec/integration/dummy/db/*.sqlite3
|
25
|
-
spec/integration/dummy/db/*.sqlite3-journal
|
26
|
-
spec/integration/dummy/tmp
|
27
|
-
spec/integration/dummy/.sass-cache
|
28
|
-
spec/integration/dummy/.generators
|
29
|
-
spec/integration/dummy/.rakeTasks
|
data/.markdownlint.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# markdownlint config
|
2
|
+
|
3
|
+
# The CHANGELOG contains duplicated headers by design
|
4
|
+
MD024: false
|
5
|
+
|
6
|
+
# MD013/line-length: disable line length for all. We prefer lines as
|
7
|
+
# long as paragraph with in-editor line breaks.
|
8
|
+
MD013: false
|
9
|
+
|
10
|
+
# MD033/no-inline-html: allow often need tags
|
11
|
+
MD033:
|
12
|
+
allowed_elements:
|
13
|
+
- figure
|
14
|
+
- figcaption
|
15
|
+
|
16
|
+
# MD046/code-block-style: code block style conflicting with
|
17
|
+
# admonitions...
|
18
|
+
MD046: false
|
19
|
+
|
20
|
+
# MD048/code-fence-style: code fence style
|
21
|
+
MD048:
|
22
|
+
style: backtick
|
data/.rubocop.yml
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
inherit_gem:
|
2
|
-
|
2
|
+
rubocop-config: default.yml
|
3
3
|
|
4
4
|
AllCops:
|
5
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.7
|
6
|
+
SuggestExtensions: False
|
6
7
|
Exclude:
|
7
8
|
- gemfiles/**/*
|
8
9
|
- spec/integration/dummy/**/*
|
@@ -11,3 +12,6 @@ AllCops:
|
|
11
12
|
Layout/LineLength:
|
12
13
|
Exclude:
|
13
14
|
- spec/**/*
|
15
|
+
|
16
|
+
RSpec/MultipleMemoizedHelpers:
|
17
|
+
Max: 15
|
@@ -0,0 +1 @@
|
|
1
|
+
AMQP
|
data/Appraisals
CHANGED
@@ -1,18 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# -*- mode: ruby -*-
|
3
2
|
|
4
|
-
|
5
|
-
gem 'rails', '~> 5.2.0'
|
6
|
-
end
|
3
|
+
# vim: ft=ruby
|
7
4
|
|
8
|
-
appraise 'rails-
|
9
|
-
|
10
|
-
end
|
5
|
+
# appraise 'rails-5.2' do
|
6
|
+
# gem 'rails', '~> 5.2.0'
|
7
|
+
# end
|
8
|
+
|
9
|
+
# appraise 'rails-6.0' do
|
10
|
+
# gem 'rails', '~> 6.0.0'
|
11
|
+
# end
|
11
12
|
|
12
13
|
appraise 'rails-6.1' do
|
13
14
|
gem 'rails', '~> 6.1.0'
|
14
15
|
end
|
15
16
|
|
16
|
-
appraise 'rails-
|
17
|
+
appraise 'rails-7.0' do
|
18
|
+
gem 'rails', '~> 6.1.0'
|
19
|
+
end
|
20
|
+
|
21
|
+
appraise 'rails-head' do
|
17
22
|
gem 'rails', git: 'https://github.com/rails/rails', require: 'rails'
|
18
23
|
end
|
data/CHANGELOG.md
CHANGED
@@ -1,54 +1,99 @@
|
|
1
1
|
# Changelog
|
2
|
+
|
2
3
|
All notable changes to this project will be documented in this file.
|
3
4
|
|
4
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
5
6
|
|
6
7
|
## [Unreleased]
|
7
8
|
|
9
|
+
## [1.5.0] - 2023-08-16
|
10
|
+
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- Support for Ruby 3.1 and 3.2
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- Drop support for Ruby < 2.7
|
18
|
+
|
19
|
+
### Fixed
|
20
|
+
|
21
|
+
- `TestPool#run` passing down keyword arguments
|
22
|
+
|
23
|
+
## [1.4.0] - 2022-01-10
|
24
|
+
|
25
|
+
### Added
|
26
|
+
|
27
|
+
- Support for namespaced consumer classes in routes file (#48, #49)
|
28
|
+
|
29
|
+
### Removed
|
30
|
+
|
31
|
+
- Unused `Channel#reject` method
|
32
|
+
|
8
33
|
## [1.3.2] - 2021-09-21
|
34
|
+
|
9
35
|
### Fixed
|
36
|
+
|
10
37
|
- Rake task `msgr:drain` ran before all routes were initialized (#44)
|
11
38
|
|
12
39
|
## [1.3.1] - 2020-12-16
|
40
|
+
|
13
41
|
### Fixed
|
42
|
+
|
14
43
|
- Delay setting default options for correct relative routing file path
|
15
44
|
|
16
45
|
## [1.3.0] - 2020-12-16
|
46
|
+
|
17
47
|
### Added
|
48
|
+
|
18
49
|
- Support and testing for Rails 6.1
|
19
50
|
- Rake task for purging all known queues (#43)
|
20
51
|
|
21
52
|
### Changed
|
53
|
+
|
22
54
|
- High-risk feature to autostart client in-process has been removed without replacement
|
23
55
|
- Parsing config is more relaxed now but directly based on YAML boolean values
|
24
56
|
|
25
57
|
## [1.2.0] - 2019-06-27
|
58
|
+
|
26
59
|
### Added
|
60
|
+
|
27
61
|
- Test support of Rails 5.2
|
28
62
|
|
29
63
|
### Changed
|
30
|
-
|
64
|
+
|
65
|
+
- Serialize JSON using core JSON instead of `MultiJson`
|
31
66
|
- Remove application/text fallback for payload (#25)
|
32
67
|
|
33
68
|
## [1.1.0] - 2018-07-25
|
69
|
+
|
34
70
|
### Added
|
71
|
+
|
35
72
|
- New command line runner
|
36
73
|
|
37
74
|
## [1.0.0] - 2017-12-29
|
75
|
+
|
38
76
|
### Changed
|
77
|
+
|
39
78
|
- Configure prefetch per binding and disable auto ack in consumer for customized batch processing (#15)
|
40
79
|
- Replace usage of deprecated exception class (#12)
|
41
80
|
|
42
81
|
## [0.15.2] - 2017-09-04
|
82
|
+
|
43
83
|
### Fixed
|
84
|
+
|
44
85
|
- Fix regression in parsing `:uri` config with empty path
|
45
86
|
|
46
87
|
## [0.15.1] - 2017-07-31
|
88
|
+
|
47
89
|
### Fixed
|
90
|
+
|
48
91
|
- Fix errors with additional configuration keys for AMQP connection (#13)
|
49
92
|
|
50
93
|
## [0.15.0] - 2017-03-30
|
94
|
+
|
51
95
|
### Added
|
96
|
+
|
52
97
|
- Add new configuration option `:raise_exceptions` that can be used to enable
|
53
98
|
exceptions being raised from consumers. Mostly useful for testing consumers.
|
54
99
|
Defaults to `false`.
|
@@ -56,69 +101,101 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
56
101
|
- Add methods for purging queues
|
57
102
|
|
58
103
|
### Changed
|
59
|
-
|
104
|
+
|
105
|
+
- Rework `TestPool` timeout handling to not account processing time
|
60
106
|
|
61
107
|
## [0.14.1] - 2016-02-17
|
108
|
+
|
62
109
|
### Fixed
|
110
|
+
|
63
111
|
- Fix loading test pool source file
|
64
112
|
|
65
113
|
## [0.14.0] - 2016-02-17
|
114
|
+
|
66
115
|
### Added
|
116
|
+
|
67
117
|
- Add experimental test pool (`Msgr::TestPool`)
|
68
118
|
|
69
119
|
## [0.13.0] - 2015-08-24
|
120
|
+
|
70
121
|
### Changed
|
122
|
+
|
71
123
|
- Use `Rails.application.config_for` if available.
|
72
124
|
|
73
125
|
## [0.12.2] - 2015-01-14
|
126
|
+
|
74
127
|
### Changed
|
128
|
+
|
75
129
|
- Do not delete the exchange on stop delete:true - as the exchange is changed
|
76
130
|
|
77
131
|
## [0.12.1] - 2014-11-06
|
132
|
+
|
78
133
|
### Changed
|
134
|
+
|
79
135
|
- Loose dependency on bunny to allow `~> 1.4` for stone-age old RabbitMQ servers.
|
80
136
|
|
81
137
|
## [0.11.0-rc3] - 2014-04-11
|
138
|
+
|
82
139
|
### Added
|
83
|
-
|
140
|
+
|
141
|
+
- Add `checkcredentials` config option to disable initial connect to RabbitMQ
|
84
142
|
server to check the credentials
|
85
143
|
|
86
144
|
### Changed
|
145
|
+
|
87
146
|
- Define pool_class by string to make it useable with rails
|
88
147
|
|
89
148
|
## [0.11.0-rc2] - 2014-03-29
|
149
|
+
|
90
150
|
### Added
|
91
|
-
|
151
|
+
|
152
|
+
- Add `#nack` for messages when an error is rescued by dispatcher
|
92
153
|
|
93
154
|
## [0.11.0-rc1] - 2014-03-29
|
155
|
+
|
94
156
|
### Added
|
95
|
-
|
157
|
+
|
158
|
+
- Add `pool_class` config to override pool classes used by dispatcher
|
96
159
|
|
97
160
|
## [0.4.1] - 2014-03-18
|
161
|
+
|
98
162
|
### Fixed
|
163
|
+
|
99
164
|
- Fix bug with empty routes on client start
|
100
165
|
|
101
166
|
## [0.4.0] - 2014-03-04
|
167
|
+
|
102
168
|
### Changed
|
103
|
-
|
169
|
+
|
170
|
+
- Improve `Railtie` and autostart code
|
104
171
|
|
105
172
|
## 0.4.0 - 0.10.0
|
173
|
+
|
106
174
|
### Changed
|
175
|
+
|
107
176
|
- Some lost history due to several crises
|
108
177
|
|
109
178
|
## [0.3.0] - 2014-03-03
|
179
|
+
|
110
180
|
### Added
|
181
|
+
|
111
182
|
- Support for forking web servers like unicorn
|
112
183
|
|
113
184
|
## [0.2.1] - 2014-02-26
|
185
|
+
|
114
186
|
### Fixed
|
115
|
-
|
187
|
+
|
188
|
+
- Fix wrong Rails initializer code - was not use the config file
|
116
189
|
|
117
190
|
## [0.2.0] - 2014-02-21
|
191
|
+
|
118
192
|
### Changed
|
193
|
+
|
119
194
|
- Improve rails initializer code
|
120
195
|
|
121
|
-
[Unreleased]: https://github.com/jgraichen/msgr/compare/v1.
|
196
|
+
[Unreleased]: https://github.com/jgraichen/msgr/compare/v1.5.0...HEAD
|
197
|
+
[1.5.0]: https://github.com/jgraichen/msgr/compare/v1.4.0...v1.5.0
|
198
|
+
[1.4.0]: https://github.com/jgraichen/msgr/compare/v1.3.2...v1.4.0
|
122
199
|
[1.3.2]: https://github.com/jgraichen/msgr/compare/v1.3.1...v1.3.2
|
123
200
|
[1.3.1]: https://github.com/jgraichen/msgr/compare/v1.3.0...v1.3.1
|
124
201
|
[1.3.0]: https://github.com/jgraichen/msgr/compare/v1.2.0...v1.3.0
|
data/Gemfile
CHANGED
@@ -4,11 +4,11 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
gem 'appraisal'
|
6
6
|
gem 'coveralls'
|
7
|
-
gem 'my-rubocop', github: 'jgraichen/my-rubocop'
|
8
7
|
gem 'rake'
|
9
8
|
gem 'rake-release', '~> 1.1'
|
10
9
|
gem 'rspec', '~> 3.0'
|
11
10
|
gem 'rspec-rails'
|
11
|
+
gem 'rubocop-config', github: 'jgraichen/rubocop-config', ref: 'v11', require: false
|
12
12
|
|
13
13
|
gem 'rails'
|
14
14
|
gem 'sqlite3'
|
data/README.md
CHANGED
@@ -1,34 +1,38 @@
|
|
1
|
-
# Msgr:
|
1
|
+
# Msgr: _Rails-like Messaging Framework_
|
2
2
|
|
3
|
-
|
4
|
-
[![
|
5
|
-
[![Build Status](https://travis-ci.org/jgraichen/msgr.svg?branch=master)](https://travis-ci.org/jgraichen/msgr)
|
6
|
-
[![Build Status](https://github.com/jgraichen/msgr/workflows/Build/badge.svg?branch=master)](https://github.com/jgraichen/msgr/actions?query=workflow%3ABuild+branch%3Amaster)
|
3
|
+
[![Gem](https://img.shields.io/gem/v/msgr?logo=rubygems)](https://rubygems.org/gems/msgr)
|
4
|
+
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/jgraichen/msgr/test.yml?branch=main&logo=github)](https://github.com/jgraichen/msgr/actions/workflows/test.yml)
|
7
5
|
[![RubyDoc Documentation](http://img.shields.io/badge/rubydoc-here-blue.svg)](http://rubydoc.info/github/jgraichen/msgr/master/frames)
|
8
6
|
|
9
7
|
You know it and you like it. Using Rails you can just declare your routes and
|
10
8
|
create a controller. That's all you need to process requests.
|
11
9
|
|
12
|
-
With
|
10
|
+
With _Msgr_ you can do the same for asynchronous AMQP messaging. Just define
|
13
11
|
your routes, create your consumer and watch your app processing messages.
|
14
12
|
|
15
13
|
## Installation
|
16
14
|
|
17
15
|
Add this line to your application's Gemfile:
|
18
16
|
|
19
|
-
|
17
|
+
```ruby
|
18
|
+
gem 'msgr', '~> 1.5'
|
19
|
+
```
|
20
20
|
|
21
21
|
And then execute:
|
22
22
|
|
23
|
-
|
23
|
+
```console
|
24
|
+
bundle
|
25
|
+
```
|
24
26
|
|
25
27
|
Or install it yourself as:
|
26
28
|
|
27
|
-
|
29
|
+
```console
|
30
|
+
gem install msgr
|
31
|
+
```
|
28
32
|
|
29
33
|
## Usage
|
30
34
|
|
31
|
-
After adding 'msgr' to your
|
35
|
+
After adding 'msgr' to your Gemfile create a `config/rabbitmq.yml` like this:
|
32
36
|
|
33
37
|
```yaml
|
34
38
|
common: &common
|
@@ -83,7 +87,6 @@ end
|
|
83
87
|
|
84
88
|
Run client daemon with `bundle exec msgr`.
|
85
89
|
|
86
|
-
|
87
90
|
## Advanced configuration
|
88
91
|
|
89
92
|
### Manual message acknowledgments
|
@@ -106,10 +109,9 @@ end
|
|
106
109
|
|
107
110
|
Per default each message queue has a prefetch count of 1. This value can be changed when specifying the messaging routes:
|
108
111
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
112
|
+
```ruby
|
113
|
+
route 'local.test.index', to: 'test#index', prefetch: 42
|
114
|
+
```
|
113
115
|
|
114
116
|
## Testing
|
115
117
|
|
@@ -154,7 +156,6 @@ it 'executes the consumer' do
|
|
154
156
|
end
|
155
157
|
```
|
156
158
|
|
157
|
-
|
158
159
|
## Contributing
|
159
160
|
|
160
161
|
1. Fork it
|
data/gemfiles/rails_5.2.gemfile
CHANGED
@@ -4,8 +4,9 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal"
|
6
6
|
gem "coveralls"
|
7
|
-
gem "my-rubocop", github: "jgraichen/my-rubocop"
|
7
|
+
gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
|
8
8
|
gem "rake"
|
9
|
+
gem "rake-release", "~> 1.1"
|
9
10
|
gem "rspec", "~> 3.0"
|
10
11
|
gem "rspec-rails"
|
11
12
|
gem "rails", "~> 5.2.0"
|
data/gemfiles/rails_6.0.gemfile
CHANGED
@@ -4,8 +4,9 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal"
|
6
6
|
gem "coveralls"
|
7
|
-
gem "my-rubocop", github: "jgraichen/my-rubocop"
|
7
|
+
gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
|
8
8
|
gem "rake"
|
9
|
+
gem "rake-release", "~> 1.1"
|
9
10
|
gem "rspec", "~> 3.0"
|
10
11
|
gem "rspec-rails"
|
11
12
|
gem "rails", "~> 6.0.0"
|
data/gemfiles/rails_6.1.gemfile
CHANGED
@@ -4,8 +4,9 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal"
|
6
6
|
gem "coveralls"
|
7
|
-
gem "my-rubocop", github: "jgraichen/my-rubocop"
|
7
|
+
gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
|
8
8
|
gem "rake"
|
9
|
+
gem "rake-release", "~> 1.1"
|
9
10
|
gem "rspec", "~> 3.0"
|
10
11
|
gem "rspec-rails"
|
11
12
|
gem "rails", "~> 6.1.0"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal"
|
6
|
+
gem "coveralls"
|
7
|
+
gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
|
8
|
+
gem "rake"
|
9
|
+
gem "rake-release", "~> 1.1"
|
10
|
+
gem "rspec", "~> 3.0"
|
11
|
+
gem "rspec-rails"
|
12
|
+
gem "rails", "~> 6.1.0"
|
13
|
+
gem "sqlite3"
|
14
|
+
|
15
|
+
gemspec path: "../"
|
@@ -4,8 +4,9 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "appraisal"
|
6
6
|
gem "coveralls"
|
7
|
-
gem "my-rubocop", github: "jgraichen/my-rubocop"
|
7
|
+
gem "my-rubocop", github: "jgraichen/my-rubocop", ref: "v4"
|
8
8
|
gem "rake"
|
9
|
+
gem "rake-release", "~> 1.1"
|
9
10
|
gem "rspec", "~> 3.0"
|
10
11
|
gem "rspec-rails"
|
11
12
|
gem "rails", git: "https://github.com/rails/rails", require: "rails"
|
data/lib/msgr/binding.rb
CHANGED
@@ -10,7 +10,7 @@ module Msgr
|
|
10
10
|
:dispatcher,
|
11
11
|
:queue,
|
12
12
|
:route,
|
13
|
-
:subscription
|
13
|
+
:subscription,
|
14
14
|
)
|
15
15
|
|
16
16
|
def initialize(connection, route, dispatcher)
|
@@ -54,7 +54,7 @@ module Msgr
|
|
54
54
|
rescue StandardError => e
|
55
55
|
log(:error) do
|
56
56
|
"Rescued error from subscribe: #{e.class.name}: " \
|
57
|
-
|
57
|
+
"#{e}\n#{e.backtrace.join("\n")}"
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
data/lib/msgr/channel.rb
CHANGED
@@ -22,7 +22,7 @@ module Msgr
|
|
22
22
|
@channel.topic(prefix(EXCHANGE_NAME), durable: true).tap do |ex|
|
23
23
|
log(:debug) do
|
24
24
|
"Created exchange #{ex.name} (type: #{ex.type}, " \
|
25
|
-
|
25
|
+
"durable: #{ex.durable?}, auto_delete: #{ex.auto_delete?})"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -32,7 +32,7 @@ module Msgr
|
|
32
32
|
@channel.queue(prefix(name), durable: true, **opts).tap do |queue|
|
33
33
|
log(:debug) do
|
34
34
|
"Create queue #{queue.name} (durable: #{queue.durable?}, " \
|
35
|
-
|
35
|
+
"auto_delete: #{queue.auto_delete?})"
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -55,11 +55,6 @@ module Msgr
|
|
55
55
|
log(:debug) { "Nacked message: #{delivery_tag}" }
|
56
56
|
end
|
57
57
|
|
58
|
-
def reject(delivery_tag, requeue = true)
|
59
|
-
@channel.reject delivery_tag, requeue
|
60
|
-
log(:debug) { "Rejected message: #{delivery_tag}" }
|
61
|
-
end
|
62
|
-
|
63
58
|
def close
|
64
59
|
@channel.close if @channel.open?
|
65
60
|
end
|
data/lib/msgr/cli.rb
CHANGED
@@ -41,17 +41,16 @@ module Msgr
|
|
41
41
|
Signal.trap('INT') { w.puts 'INT' }
|
42
42
|
Signal.trap('TERM') { w.puts 'TERM' }
|
43
43
|
|
44
|
-
Msgr.logger = Logger.new(
|
44
|
+
Msgr.logger = Logger.new($stdout)
|
45
45
|
Msgr.client.start
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
47
|
+
# Wait until we receive a signal
|
48
|
+
r.wait_readable
|
49
|
+
case r.gets.strip
|
50
|
+
when 'INT', 'TERM' # Safe shutdown
|
51
|
+
Msgr.client.stop
|
52
|
+
else # Error
|
53
|
+
exit 1
|
55
54
|
end
|
56
55
|
end
|
57
56
|
|
@@ -65,20 +64,20 @@ module Msgr
|
|
65
64
|
def parse(_argv)
|
66
65
|
options = {
|
67
66
|
require: Dir.pwd,
|
68
|
-
environment: 'development'
|
67
|
+
environment: 'development',
|
69
68
|
}
|
70
69
|
|
71
70
|
OptionParser.new do |o|
|
72
71
|
o.on(
|
73
72
|
'-r', '--require [PATH|DIR]',
|
74
|
-
'Location of Rails application (default to current directory)'
|
73
|
+
'Location of Rails application (default to current directory)',
|
75
74
|
) do |arg|
|
76
75
|
options[:require] = arg
|
77
76
|
end
|
78
77
|
|
79
78
|
o.on(
|
80
79
|
'-e', '--environment [env]',
|
81
|
-
'Rails environment (default to development)'
|
80
|
+
'Rails environment (default to development)',
|
82
81
|
) do |arg|
|
83
82
|
options[:environment] = arg
|
84
83
|
end
|