msgr 0.14.1.1.b112 → 0.14.1.1.b124
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 +5 -13
- data/.travis.yml +8 -13
- data/CHANGELOG.md +4 -0
- data/Gemfile +5 -13
- data/README.md +45 -3
- data/Rakefile +2 -2
- data/gemfiles/Gemfile.rails-4-0 +1 -1
- data/gemfiles/Gemfile.rails-4-1 +1 -1
- data/gemfiles/Gemfile.rails-4-2 +1 -1
- data/gemfiles/Gemfile.rails-5-0 +7 -0
- data/lib/msgr/dispatcher.rb +4 -1
- data/lib/msgr/railtie.rb +9 -0
- data/spec/integration/dummy/config/boot.rb +1 -1
- data/spec/integration/msgr/dispatcher_spec.rb +31 -9
- data/spec/integration/msgr/railtie_spec.rb +31 -4
- data/spec/integration/msgr_spec.rb +1 -1
- data/spec/integration/spec_helper.rb +0 -1
- data/spec/msgr/msgr/routes_spec.rb +5 -4
- data/spec/msgr/spec_helper.rb +0 -2
- metadata +20 -19
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
NDUwNjY3NDU5ZWQ1ZjM1ZjdkYTE0N2YwYjg4YTRjZmFhOTYyOTEzOA==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: ecda8758c7878ecf3d464b1fcd382205499bd10a
|
|
4
|
+
data.tar.gz: d9ad4ae2f6c2615aeb58643a6d138a7a5f54658f
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
YmQ4OTM2MGMxZjFkZmE0ZTlmNTdiNmQ4MzE5NmU1ZDgwNDdlNWEyZGU2N2U2
|
|
11
|
-
YjUwYjViZTg1MjIyOTdjY2M4Mjk5OThjN2I0MzNjZTVlMWRkYjc=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
MjY0OWNlMGQ0N2U3MjdmMWZmYWI1YTI2NGM0ZGQ0MjlhODA3ZDkyZWE3ZDNj
|
|
14
|
-
M2NjM2VmYmUzNGVmMTFjZjA1NDhjNmMzNzZiMGE5ZTJhNjBkOGFiNDZlNmI3
|
|
15
|
-
OGNhYmNiY2U1Nzk4ZTg0NDg4NDNmYjk0YmMxYTVlZTAxOGNjMzc=
|
|
6
|
+
metadata.gz: 1b90ebb2242b8168535e73f26605de36549c0191a8c0018167c9944d3da6ff38a503298d956142000822001602369680fbd002d7b9c3471b2ca5d0c22a539814
|
|
7
|
+
data.tar.gz: 7703cc56be933682a2986c4a2cbfcee45c77b049eda474fc0e8f9e17994f37e3509e8639bf6bf993b8ecca2837f4d32f8dea88514b8f3d2a2b1dbeb48b3343f7
|
data/.travis.yml
CHANGED
|
@@ -1,26 +1,21 @@
|
|
|
1
|
+
dist: trusty
|
|
1
2
|
sudo: false
|
|
2
3
|
language: ruby
|
|
3
4
|
bundler_args: "--without development"
|
|
4
5
|
services:
|
|
5
6
|
- rabbitmq
|
|
6
7
|
rvm:
|
|
7
|
-
- '2.
|
|
8
|
-
- '2.
|
|
8
|
+
- '2.4.1'
|
|
9
|
+
- '2.3.3'
|
|
10
|
+
- '2.2.7'
|
|
9
11
|
- '2.1.10'
|
|
10
12
|
gemfile:
|
|
13
|
+
- gemfiles/Gemfile.rails-5-0
|
|
11
14
|
- gemfiles/Gemfile.rails-4-2
|
|
12
|
-
- gemfiles/Gemfile.rails-4-1
|
|
13
|
-
- gemfiles/Gemfile.rails-4-0
|
|
14
|
-
env:
|
|
15
|
-
- BUNNY_VERSION="~> 2.0"
|
|
16
|
-
- BUNNY_VERSION="~> 1.5"
|
|
17
|
-
- BUNNY_VERSION="~> 1.4.0"
|
|
18
15
|
matrix:
|
|
19
16
|
exclude:
|
|
20
|
-
- rvm: '2.
|
|
21
|
-
gemfile: gemfiles/Gemfile.rails-
|
|
22
|
-
- rvm: '2.2.5'
|
|
23
|
-
gemfile: gemfiles/Gemfile.rails-4-0
|
|
17
|
+
- rvm: '2.1.10'
|
|
18
|
+
gemfile: gemfiles/Gemfile.rails-5-0
|
|
24
19
|
script:
|
|
25
20
|
- bundle exec rake spec:msgr
|
|
26
21
|
- bundle exec rake spec:integration
|
|
@@ -32,4 +27,4 @@ deploy:
|
|
|
32
27
|
on:
|
|
33
28
|
branch: master
|
|
34
29
|
repo: jgraichen/msgr
|
|
35
|
-
rvm: 2.3.
|
|
30
|
+
rvm: 2.3.3
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## master
|
|
4
|
+
|
|
5
|
+
* Add new configuration option `:raise_exceptions` that can be used to enable exceptions being raised from consumers. Mostly useful for testing consumers. Defaults to `false`.
|
|
6
|
+
|
|
3
7
|
## 0.14.0
|
|
4
8
|
|
|
5
9
|
* Add experimental test pool (`Msgr::TestPool`)
|
data/Gemfile
CHANGED
|
@@ -3,31 +3,23 @@ source 'https://rubygems.org'
|
|
|
3
3
|
# Development gems
|
|
4
4
|
#
|
|
5
5
|
gem 'rake'
|
|
6
|
-
gem 'rspec'
|
|
7
|
-
gem 'rspec-message-within', '>= 1.1.1'
|
|
6
|
+
gem 'rspec', '~> 3.0'
|
|
8
7
|
gem 'fuubar'
|
|
9
8
|
gem 'coveralls'
|
|
10
9
|
|
|
11
10
|
# Doc
|
|
12
11
|
group :development do
|
|
13
|
-
gem 'yard', '~> 0.8
|
|
12
|
+
gem 'yard', '~> 0.9.8'
|
|
14
13
|
gem 'listen'
|
|
15
14
|
gem 'guard-yard'
|
|
16
15
|
gem 'guard-rspec'
|
|
17
|
-
gem 'redcarpet'
|
|
16
|
+
gem 'redcarpet'
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
group :rails do
|
|
21
|
-
gem 'rails', '>= 3.2'
|
|
20
|
+
gem 'rails', '>= 3.2'
|
|
22
21
|
gem 'rspec-rails'
|
|
23
|
-
gem 'sqlite3'
|
|
24
|
-
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
platform :rbx do
|
|
28
|
-
gem 'rubysl'
|
|
29
|
-
gem 'rubinius-coverage'
|
|
30
|
-
gem 'racc'
|
|
22
|
+
gem 'sqlite3'
|
|
31
23
|
end
|
|
32
24
|
|
|
33
25
|
# Specify your gem's dependencies in acfs.gemspec
|
data/README.md
CHANGED
|
@@ -11,9 +11,7 @@ You know it and you like it. Using Rails you can just declare your routes and
|
|
|
11
11
|
create a controller. That's all you need to process requests.
|
|
12
12
|
|
|
13
13
|
With *Msgr* you can do the same for asynchronous AMQP messaging. Just define
|
|
14
|
-
your routes, create your consumer and watch
|
|
15
|
-
|
|
16
|
-
*Note: Msgr is still under heavy development.*
|
|
14
|
+
your routes, create your consumer and watch your app processing messages.
|
|
17
15
|
|
|
18
16
|
## Installation
|
|
19
17
|
|
|
@@ -98,6 +96,50 @@ common: &common
|
|
|
98
96
|
And call inside each worker `Msgr.start` - e.g. in an after-fork block
|
|
99
97
|
|
|
100
98
|
|
|
99
|
+
## Testing
|
|
100
|
+
|
|
101
|
+
### Recommended configuration
|
|
102
|
+
|
|
103
|
+
```yaml
|
|
104
|
+
test:
|
|
105
|
+
<<: *common
|
|
106
|
+
pool_class: Msgr::TestPool
|
|
107
|
+
raise_exceptions: true
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The `Msgr::TestPool` pool implementation executes all consumers synchronously.
|
|
111
|
+
By enabling the `raise_exceptions` configuration flag, we can ensure that exceptions raised in a consumer will not be swallowed by dispatcher (which it usually does in order to retry consuming the message).
|
|
112
|
+
|
|
113
|
+
### RSpec example
|
|
114
|
+
|
|
115
|
+
In your `spec_helper.rb`:
|
|
116
|
+
|
|
117
|
+
```ruby
|
|
118
|
+
config.after(:each) do
|
|
119
|
+
# Flush the consumer queue
|
|
120
|
+
Msgr.client.stop delete: true
|
|
121
|
+
Msgr::TestPool.reset
|
|
122
|
+
end
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
In a test:
|
|
126
|
+
|
|
127
|
+
```ruby
|
|
128
|
+
before { Msgr.client.start }
|
|
129
|
+
|
|
130
|
+
it 'executes the consumer' do
|
|
131
|
+
# Publish an event on our queue
|
|
132
|
+
Msgr.publish 'payload', to: 'msgr.queue.my_queue'
|
|
133
|
+
|
|
134
|
+
# Let the TestPool handle exactly one event
|
|
135
|
+
Msgr::TestPool.run count: 1
|
|
136
|
+
|
|
137
|
+
# And finally, assert that something happened
|
|
138
|
+
expect(actual).to eq expected
|
|
139
|
+
end
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
|
|
101
143
|
## Contributing
|
|
102
144
|
|
|
103
145
|
1. Fork it
|
data/Rakefile
CHANGED
|
@@ -19,13 +19,13 @@ namespace :spec do
|
|
|
19
19
|
|
|
20
20
|
desc 'Run all unit specs.'
|
|
21
21
|
RSpec::Core::RakeTask.new(:msgr) do |t|
|
|
22
|
-
t.ruby_opts=
|
|
22
|
+
t.ruby_opts = '-Ispec/support -rsetup -Ispec/msgr'
|
|
23
23
|
t.pattern = 'spec/msgr/**/*_spec.rb'
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
desc 'Run all integration specs.'
|
|
27
27
|
RSpec::Core::RakeTask.new(:integration) do |t|
|
|
28
|
-
t.ruby_opts=
|
|
28
|
+
t.ruby_opts = '-Ispec/support -rsetup -Ispec/integration'
|
|
29
29
|
t.pattern = 'spec/integration/**/*_spec.rb'
|
|
30
30
|
end
|
|
31
31
|
end
|
data/gemfiles/Gemfile.rails-4-0
CHANGED
data/gemfiles/Gemfile.rails-4-1
CHANGED
data/gemfiles/Gemfile.rails-4-2
CHANGED
data/lib/msgr/dispatcher.rb
CHANGED
|
@@ -7,13 +7,14 @@ module Msgr
|
|
|
7
7
|
class Dispatcher
|
|
8
8
|
include Logging
|
|
9
9
|
|
|
10
|
-
attr_reader :pool
|
|
10
|
+
attr_reader :config, :pool
|
|
11
11
|
|
|
12
12
|
def initialize(config)
|
|
13
13
|
config[:pool_class] ||= 'Msgr::Dispatcher::NullPool'
|
|
14
14
|
|
|
15
15
|
log(:debug) { "Initialize new dispatcher (#{config[:pool_class]}: #{config})..." }
|
|
16
16
|
|
|
17
|
+
@config = config
|
|
17
18
|
@pool = config[:pool_class].constantize.new config
|
|
18
19
|
end
|
|
19
20
|
|
|
@@ -39,6 +40,8 @@ module Msgr
|
|
|
39
40
|
"Dispatcher error: #{error.class.name}: #{error}\n" +
|
|
40
41
|
error.backtrace.join("\n")
|
|
41
42
|
end
|
|
43
|
+
|
|
44
|
+
raise error if config[:raise_exceptions]
|
|
42
45
|
ensure
|
|
43
46
|
if defined?(ActiveRecord) && ActiveRecord::Base.connection_pool.active_connection?
|
|
44
47
|
log(:debug) { 'Release used AR connection for dispatcher thread.' }
|
data/lib/msgr/railtie.rb
CHANGED
|
@@ -61,6 +61,15 @@ module Msgr
|
|
|
61
61
|
raise ArgumentError, "Invalid value for rabbitmq config checkcredentials: \"#{cfg[:checkcredentials]}\""
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
case cfg[:raise_exceptions]
|
|
65
|
+
when true, 'true', 'enabled'
|
|
66
|
+
cfg[:raise_exceptions] = true
|
|
67
|
+
when false, 'false', 'disabled', nil
|
|
68
|
+
cfg[:raise_exceptions] = false
|
|
69
|
+
else
|
|
70
|
+
raise ArgumentError, "Invalid value for rabbitmq config raise_exceptions: \"#{cfg[:raise_exceptions]}\""
|
|
71
|
+
end
|
|
72
|
+
|
|
64
73
|
cfg[:routing_file] ||= Rails.root.join('config/msgr.rb').to_s
|
|
65
74
|
cfg
|
|
66
75
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Set up gems listed in the Gemfile.
|
|
2
2
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
|
|
3
3
|
|
|
4
|
-
require 'bundler/setup' if File.
|
|
4
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
|
5
5
|
$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
|
|
@@ -6,8 +6,15 @@ class DispatcherTestConsumer < Msgr::Consumer
|
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
+
class DispatcherRaiseConsumer < Msgr::Consumer
|
|
10
|
+
def index
|
|
11
|
+
raise ArgumentError, 'Not happy with the payload'
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
9
15
|
describe Msgr::Dispatcher do
|
|
10
|
-
let(:dispatcher) { described_class.new
|
|
16
|
+
let(:dispatcher) { described_class.new config }
|
|
17
|
+
let(:config) { { max: 1 } }
|
|
11
18
|
let(:consumer) { 'DispatcherTestConsumer' }
|
|
12
19
|
let(:route) do
|
|
13
20
|
double(:route).tap do |t|
|
|
@@ -22,30 +29,45 @@ describe Msgr::Dispatcher do
|
|
|
22
29
|
end
|
|
23
30
|
let(:delivery_info) do
|
|
24
31
|
double(:delivery_info).tap do |ti|
|
|
25
|
-
allow(ti).to receive(:delivery_tag).and_return
|
|
32
|
+
allow(ti).to receive(:delivery_tag).and_return(3)
|
|
26
33
|
end
|
|
27
34
|
end
|
|
28
35
|
let(:payload) { {} }
|
|
29
36
|
let(:metadata) do
|
|
30
37
|
double(:metadata).tap do |metadata|
|
|
31
|
-
allow(metadata).to receive(:content_type).and_return
|
|
38
|
+
allow(metadata).to receive(:content_type).and_return('text/plain')
|
|
32
39
|
end
|
|
33
40
|
end
|
|
34
41
|
let(:message) { Msgr::Message.new connection, delivery_info, metadata, payload, route }
|
|
35
42
|
let(:action) { -> { dispatcher.call message }}
|
|
36
43
|
|
|
37
|
-
before do
|
|
38
|
-
expect_any_instance_of(::Msgr::Dispatcher::NullPool).to receive(:post).and_return { |m, &block| block.call m}
|
|
39
|
-
expect_any_instance_of(DispatcherTestConsumer).to receive(:index)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
44
|
it 'should consume message' do
|
|
45
|
+
expect_any_instance_of(DispatcherTestConsumer).to receive(:index)
|
|
43
46
|
dispatcher.call message
|
|
44
47
|
end
|
|
45
48
|
|
|
46
|
-
context 'with not
|
|
49
|
+
context 'with not acknowledged message' do
|
|
47
50
|
before { dispatcher.call message }
|
|
48
51
|
subject { message }
|
|
49
52
|
it { should be_acked }
|
|
50
53
|
end
|
|
54
|
+
|
|
55
|
+
describe 'exception swallowing' do
|
|
56
|
+
let(:consumer) { 'DispatcherRaiseConsumer' }
|
|
57
|
+
before do
|
|
58
|
+
allow(message).to receive(:nack)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should swallow exceptions by default' do
|
|
62
|
+
expect { dispatcher.call(message) }.not_to raise_error
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context 'with raise_exceptions configuration option and a synchronous pool' do
|
|
66
|
+
let(:config) { super().merge(raise_exceptions: true) }
|
|
67
|
+
|
|
68
|
+
it 'should raise the exception' do
|
|
69
|
+
expect { dispatcher.call(message) }.to raise_error(ArgumentError)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
51
73
|
end
|
|
@@ -35,30 +35,57 @@ describe Msgr::Railtie do
|
|
|
35
35
|
|
|
36
36
|
it { should raise_error 'Invalid value for rabbitmq config checkcredentials: "unvalid"'}
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
context 'with invalid raise_exceptions value' do
|
|
40
|
+
let(:settings) { {"test" => { uri: 'franz', raise_exceptions: 'unvalid'}} }
|
|
41
|
+
|
|
42
|
+
it { should raise_error 'Invalid value for rabbitmq config raise_exceptions: "unvalid"'}
|
|
43
|
+
end
|
|
38
44
|
end
|
|
39
45
|
|
|
40
46
|
context 'without set routes file' do
|
|
41
47
|
let(:settings) { {"test" => { uri: 'test'}} }
|
|
42
48
|
|
|
43
|
-
|
|
49
|
+
context '[:routing_file]' do
|
|
50
|
+
subject { super()[:routing_file] }
|
|
51
|
+
it { should eq Rails.root.join('config/msgr.rb').to_s }
|
|
52
|
+
end
|
|
44
53
|
end
|
|
45
54
|
|
|
46
55
|
context 'with set routes file' do
|
|
47
56
|
let(:settings) { {"test" => { uri: 'test', 'routing_file' => 'my fancy file' }} }
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
context '[:routing_file]' do
|
|
59
|
+
subject { super()[:routing_file] }
|
|
60
|
+
it { should eq 'my fancy file' }
|
|
61
|
+
end
|
|
50
62
|
end
|
|
51
63
|
|
|
52
64
|
context 'with uri as symbol' do
|
|
53
65
|
let(:settings) { {"test" => { uri: "hans"}}}
|
|
54
66
|
|
|
55
|
-
|
|
67
|
+
context '[:uri]' do
|
|
68
|
+
subject { super()[:uri] }
|
|
69
|
+
it { should eq 'hans' }
|
|
70
|
+
end
|
|
56
71
|
end
|
|
57
72
|
|
|
58
73
|
context 'with uri as string' do
|
|
59
74
|
let(:settings) { {"test" => { 'uri' => "hans"}}}
|
|
60
75
|
|
|
61
|
-
|
|
76
|
+
context '[:uri]' do
|
|
77
|
+
subject { super()[:uri] }
|
|
78
|
+
it { should eq 'hans' }
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
context 'without raise_exceptions config' do
|
|
83
|
+
let(:settings) { {"test" => { 'uri' => 'hans'}, "development" => { 'uri' => 'hans_dev'}}}
|
|
84
|
+
|
|
85
|
+
describe '[:raise_exceptions]' do
|
|
86
|
+
subject { super()[:raise_exceptions] }
|
|
87
|
+
it { should eq false }
|
|
88
|
+
end
|
|
62
89
|
end
|
|
63
90
|
end
|
|
64
91
|
|
|
@@ -13,7 +13,6 @@ ENV['RAILS_ENV'] ||= 'test'
|
|
|
13
13
|
ENV['RAILS_GROUPS'] = ENV['RAILS_GROUPS'] ? "rails,#{ENV['RAILS_GROUPS']}" : 'rails'
|
|
14
14
|
require File.expand_path('../dummy/config/environment', __FILE__)
|
|
15
15
|
require 'rspec/rails'
|
|
16
|
-
require 'rspec/autorun'
|
|
17
16
|
|
|
18
17
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
|
19
18
|
# in spec/support/ and its subdirectories.
|
|
@@ -7,7 +7,9 @@ describe Msgr::Routes do
|
|
|
7
7
|
let(:block) { Proc.new{} }
|
|
8
8
|
|
|
9
9
|
it 'should evaluate given block within instance context' do
|
|
10
|
-
expect(routes).to receive(:instance_eval)
|
|
10
|
+
expect(routes).to receive(:instance_eval) do |&p|
|
|
11
|
+
expect(p).to be block
|
|
12
|
+
end
|
|
11
13
|
|
|
12
14
|
routes.configure &block
|
|
13
15
|
end
|
|
@@ -32,7 +34,7 @@ describe Msgr::Routes do
|
|
|
32
34
|
let(:each) { routes.each }
|
|
33
35
|
|
|
34
36
|
it 'should iterate over configured routes' do
|
|
35
|
-
expect(each).to
|
|
37
|
+
expect(each.size).to eq 2
|
|
36
38
|
|
|
37
39
|
expect(each.map(&:keys)).to eq [%w(abc.#), %w(edf.#)]
|
|
38
40
|
expect(each.map(&:consumer)).to eq %w(TestConsumer TestConsumer)
|
|
@@ -70,7 +72,6 @@ describe Msgr::Routes do
|
|
|
70
72
|
|
|
71
73
|
it 'should add second binding to first route' do
|
|
72
74
|
subject.call
|
|
73
|
-
expect(routes.routes.first.keys).to have(2).items
|
|
74
75
|
expect(routes.routes.first.keys).to eq %w(routing.key another.routing.key)
|
|
75
76
|
end
|
|
76
77
|
end
|
|
@@ -98,7 +99,7 @@ describe Msgr::Routes do
|
|
|
98
99
|
it 'should clear old routes before reloading' do
|
|
99
100
|
routes.route 'abc', to: 'abc#test'
|
|
100
101
|
routes.reload
|
|
101
|
-
expect(routes.each).to
|
|
102
|
+
expect(routes.each.size).to eq 0
|
|
102
103
|
end
|
|
103
104
|
end
|
|
104
105
|
|
data/spec/msgr/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: msgr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.14.1.1.
|
|
4
|
+
version: 0.14.1.1.b124
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jan Graichen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bunny
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '1.4'
|
|
34
|
-
- - <
|
|
34
|
+
- - "<"
|
|
35
35
|
- !ruby/object:Gem::Version
|
|
36
36
|
version: '3.0'
|
|
37
37
|
type: :runtime
|
|
38
38
|
prerelease: false
|
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
40
|
requirements:
|
|
41
|
-
- -
|
|
41
|
+
- - ">="
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
43
|
version: '1.4'
|
|
44
|
-
- - <
|
|
44
|
+
- - "<"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
46
|
version: '3.0'
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: multi_json
|
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
|
-
- -
|
|
51
|
+
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
54
|
type: :runtime
|
|
55
55
|
prerelease: false
|
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
|
-
- -
|
|
58
|
+
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: '0'
|
|
61
61
|
- !ruby/object:Gem::Dependency
|
|
62
62
|
name: bundler
|
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
|
-
- - ~>
|
|
65
|
+
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
67
|
version: '1.3'
|
|
68
68
|
type: :development
|
|
69
69
|
prerelease: false
|
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
|
-
- - ~>
|
|
72
|
+
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
74
|
version: '1.3'
|
|
75
|
-
description:
|
|
75
|
+
description: 'Msgr: Rails-like Messaging Framework'
|
|
76
76
|
email:
|
|
77
77
|
- jg@altimos.de
|
|
78
78
|
executables: []
|
|
79
79
|
extensions: []
|
|
80
80
|
extra_rdoc_files: []
|
|
81
81
|
files:
|
|
82
|
-
- .gitignore
|
|
83
|
-
- .travis.yml
|
|
82
|
+
- ".gitignore"
|
|
83
|
+
- ".travis.yml"
|
|
84
84
|
- CHANGELOG.md
|
|
85
85
|
- Gemfile
|
|
86
86
|
- Guardfile
|
|
@@ -90,6 +90,7 @@ files:
|
|
|
90
90
|
- gemfiles/Gemfile.rails-4-0
|
|
91
91
|
- gemfiles/Gemfile.rails-4-1
|
|
92
92
|
- gemfiles/Gemfile.rails-4-2
|
|
93
|
+
- gemfiles/Gemfile.rails-5-0
|
|
93
94
|
- lib/msgr.rb
|
|
94
95
|
- lib/msgr/binding.rb
|
|
95
96
|
- lib/msgr/client.rb
|
|
@@ -173,20 +174,20 @@ require_paths:
|
|
|
173
174
|
- lib
|
|
174
175
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
176
|
requirements:
|
|
176
|
-
- -
|
|
177
|
+
- - ">="
|
|
177
178
|
- !ruby/object:Gem::Version
|
|
178
179
|
version: '0'
|
|
179
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
181
|
requirements:
|
|
181
|
-
- -
|
|
182
|
+
- - ">"
|
|
182
183
|
- !ruby/object:Gem::Version
|
|
183
184
|
version: 1.3.1
|
|
184
185
|
requirements: []
|
|
185
186
|
rubyforge_project:
|
|
186
|
-
rubygems_version: 2.4.
|
|
187
|
+
rubygems_version: 2.4.8
|
|
187
188
|
signing_key:
|
|
188
189
|
specification_version: 4
|
|
189
|
-
summary:
|
|
190
|
+
summary: 'Msgr: Rails-like Messaging Framework'
|
|
190
191
|
test_files:
|
|
191
192
|
- spec/fixtures/msgr-routes-test-1.rb
|
|
192
193
|
- spec/integration/dummy/README.rdoc
|