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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTg4NDhmODcwZWU2MzEzOTQ1ODllNzg5ODdiNGFjODJiOGZmMmZiMQ==
5
- data.tar.gz: !binary |-
6
- NDUwNjY3NDU5ZWQ1ZjM1ZjdkYTE0N2YwYjg4YTRjZmFhOTYyOTEzOA==
2
+ SHA1:
3
+ metadata.gz: ecda8758c7878ecf3d464b1fcd382205499bd10a
4
+ data.tar.gz: d9ad4ae2f6c2615aeb58643a6d138a7a5f54658f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- N2M3OGEyMWUwNTA5MGQyN2Q1MjkzMWRiNWIwYmVhZjIzNzk3ZmE5MGIwZGU4
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.3.1'
8
- - '2.2.5'
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.3.1'
21
- gemfile: gemfiles/Gemfile.rails-4-0
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.1
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.6'
12
+ gem 'yard', '~> 0.9.8'
14
13
  gem 'listen'
15
14
  gem 'guard-yard'
16
15
  gem 'guard-rspec'
17
- gem 'redcarpet', platform: :ruby
16
+ gem 'redcarpet'
18
17
  end
19
18
 
20
19
  group :rails do
21
- gem 'rails', '>= 3.2', '< 5'
20
+ gem 'rails', '>= 3.2'
22
21
  gem 'rspec-rails'
23
- gem 'sqlite3', platform: :ruby
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 you app processing messages.
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="#{ENV['CI'] ? '' : '-w -W2'} -Ispec/support -rsetup -Ispec/msgr"
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="#{ENV['CI'] ? '' : '-w -W2'} -Ispec/support -rsetup -Ispec/integration"
28
+ t.ruby_opts = '-Ispec/support -rsetup -Ispec/integration'
29
29
  t.pattern = 'spec/integration/**/*_spec.rb'
30
30
  end
31
31
  end
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
4
4
  self.instance_eval Bundler.read_file 'Gemfile'
5
5
 
6
6
  gem 'activesupport', '~> 4.0.0'
7
- gem 'bunny', ENV['BUNNY_VERSION']
7
+ gem 'bunny', ENV['BUNNY_VERSION'] if ENV['BUNNY_VERSION']
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
4
4
  self.instance_eval Bundler.read_file 'Gemfile'
5
5
 
6
6
  gem 'activesupport', '~> 4.1.0'
7
- gem 'bunny', ENV['BUNNY_VERSION']
7
+ gem 'bunny', ENV['BUNNY_VERSION'] if ENV['BUNNY_VERSION']
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
4
4
  self.instance_eval Bundler.read_file 'Gemfile'
5
5
 
6
6
  gem 'activesupport', '~> 4.2.0'
7
- gem 'bunny', ENV['BUNNY_VERSION']
7
+ gem 'bunny', ENV['BUNNY_VERSION'] if ENV['BUNNY_VERSION']
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Load root Gemfile
4
+ self.instance_eval Bundler.read_file 'Gemfile'
5
+
6
+ gem 'activesupport', '~> 5.0.0'
7
+ gem 'bunny', ENV['BUNNY_VERSION'] if ENV['BUNNY_VERSION']
@@ -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.exists?(ENV['BUNDLE_GEMFILE'])
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 max: 1 }
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 { 3 }
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 { 'text/plain' }
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 acknowlged message' do
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
- its([:routing_file]) { should eq Rails.root.join('config/msgr.rb').to_s }
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
- its([:routing_file]) { should eq 'my fancy file' }
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
- its([:uri]) { should eq 'hans' }
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
- its([:uri]) { should eq 'hans' }
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
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe TestController do
3
+ describe TestController, type: :request do
4
4
  it 'should send messages on :index' do
5
5
  get '/'
6
6
  end
@@ -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).with { |p| p == block }
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 have(2).items
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 have(0).items
102
+ expect(routes.each.size).to eq 0
102
103
  end
103
104
  end
104
105
 
@@ -8,8 +8,6 @@ Coveralls.wear! do
8
8
  add_filter 'spec'
9
9
  end
10
10
 
11
- require 'rspec/autorun'
12
- require 'rspec/message/within'
13
11
  require 'msgr'
14
12
 
15
13
  Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
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.b112
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: 2016-08-12 00:00:00.000000000 Z
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: ! 'Msgr: Rails-like Messaging Framework'
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.5
187
+ rubygems_version: 2.4.8
187
188
  signing_key:
188
189
  specification_version: 4
189
- summary: ! 'Msgr: Rails-like Messaging Framework'
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