msgr 0.14.1.1.b112 → 0.14.1.1.b124
Sign up to get free protection for your applications and to get access to all the features.
- 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
|