has-guarded-handlers 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5d854e0cfdde0b22903dbdf262be0270d1667eff
4
+ data.tar.gz: a76bbebebf714923e14fa877eb3d7386d73c2ff7
5
+ SHA512:
6
+ metadata.gz: 8ded65f328d1a8bbfcf0b0b8c3a9bcc45b0906989513f724ffbc8fed534732a60ea0431e06f3e4d5b50c01dac226b24a8e7b8d7bbbeb5f6d3536b3c291a2e2b7
7
+ data.tar.gz: 2427d889bf1d2032bbfebd1de4f7dfa8e4c28493434d488d7d39004f5d855ffef9c3648dc4ef79e97695ea3f7b9c41ece0cdd9cff7a8b3bffb7d357befafd9b8
data/.travis.yml CHANGED
@@ -1,9 +1,14 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
3
  - 1.9.3
5
- - jruby-19mode # JRuby in 1.9 mode
6
- - rbx-19mode # currently in active development, may or may not work for your project
7
- # - ruby-head
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - jruby-19mode
7
+ - rbx-2.1.1
8
+ - ruby-head
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: rbx-2.1.1
12
+ - rvm: ruby-head
8
13
  notifications:
9
14
  irc: "irc.freenode.org#adhearsion"
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # [develop](https://github.com/adhearsion/has-guarded-handlers)
2
2
 
3
+ # [1.6.0](https://github.com/adhearsion/has-guarded-handlers/compare/v1.5.0...v1.6.0) - [2014-01-16](https://rubygems.org/gems/has-guarded-handlers/versions/1.6.0)
4
+ * Feature: Add a broadcast mode to handler triggering, which ignores what happens in handlers (return value and exceptions) and unconditionally continues the handler chain.
5
+
3
6
  # [1.5.0](https://github.com/adhearsion/has-guarded-handlers/compare/v1.4.2...v1.5.0) - [2012-12-08](https://rubygems.org/gems/has-guarded-handlers/versions/1.5.0)
4
7
  * Bugfix: Correct API preservation from previous release
5
8
 
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_development_dependency 'bundler', ["~> 1.0"]
22
22
  s.add_development_dependency 'rspec', [">= 2.5.0"]
23
- s.add_development_dependency 'mocha', [">= 0"]
24
23
  s.add_development_dependency 'ci_reporter', [">= 1.6.3"]
25
24
  s.add_development_dependency 'yard', [">= 0.7.0"]
26
25
  s.add_development_dependency 'rake', [">= 0"]
@@ -77,8 +77,12 @@ module HasGuardedHandlers
77
77
  # Trigger a handler classification with an event object
78
78
  #
79
79
  # @param [Symbol, nil] type a classification to separate handlers/events into channels
80
- # @param [Object] the event object to yield to the handler block
81
- def trigger_handler(type, event)
80
+ # @param [Object] event the event object to yield to the handler block
81
+ # @param [Hash] options
82
+ # @option options [true, false] :broadcast Enables broadcast mode, where the return value or raising of handlers does not halt the handler chain. Defaults to false.
83
+ # @option options [Proc] :exception_callback Allows handling exceptions when broadcast mode is available via a callback.
84
+ def trigger_handler(type, event, options = {})
85
+ broadcast = options[:broadcast] || false
82
86
  return unless handler = handlers_of_type(type)
83
87
  called = false
84
88
  catch :halt do
@@ -88,8 +92,16 @@ module HasGuardedHandlers
88
92
  if guarded?(guards, event)
89
93
  called = false
90
94
  else
91
- call_handler handler, guards, event
92
- true
95
+ begin
96
+ call_handler handler, guards, event
97
+ rescue => e
98
+ if broadcast
99
+ options[:exception_callback].call(e) if options[:exception_callback]
100
+ else
101
+ raise
102
+ end
103
+ end
104
+ true unless broadcast
93
105
  end
94
106
  end
95
107
  delete_handler_if(type) { |_, h, _| h.equal? handler } if tmp && val
@@ -1,3 +1,3 @@
1
1
  module HasGuardedHandlers
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -7,29 +7,29 @@ describe HasGuardedHandlers do
7
7
  end
8
8
  end
9
9
 
10
- let(:event) { mock 'Event' }
11
- let(:response) { mock 'Response' }
10
+ let(:event) { double 'Event' }
11
+ let(:response) { double 'Response' }
12
12
 
13
13
  it 'can register a handler' do
14
- response.expects(:call).twice.with(event)
14
+ response.should_receive(:call).twice.with(event)
15
15
  subject.register_handler(:event) { |e| response.call e }
16
16
  subject.trigger_handler(:event, event).should be_true
17
17
  subject.trigger_handler(:event, event).should be_true
18
18
  end
19
19
 
20
20
  it 'can register a handler for all events, regardless of category' do
21
- response.expects(:call).twice.with(event)
21
+ response.should_receive(:call).twice.with(event)
22
22
  subject.register_handler { |e| response.call e }
23
23
  subject.trigger_handler :event, event
24
24
  subject.trigger_handler :bah, event
25
25
  end
26
26
 
27
27
  it 'can register a one-shot (tmp) handler' do
28
- response.expects(:call).times(3).with(event)
29
- event.expects(:foo).times(3).returns :bar
28
+ response.should_receive(:call).exactly(3).times.with(event)
29
+ event.should_receive(:foo).exactly(3).times.and_return :bar
30
30
 
31
- nomatch_event = mock 'Event(nomatch)'
32
- nomatch_event.expects(:foo).twice.returns :baz
31
+ nomatch_event = double 'Event(nomatch)'
32
+ nomatch_event.should_receive(:foo).twice.and_return :baz
33
33
 
34
34
  subject.register_handler(:event, :foo => :bar) do |e|
35
35
  response.call e
@@ -43,7 +43,7 @@ describe HasGuardedHandlers do
43
43
  end
44
44
 
45
45
  it 'can unregister a handler after registration' do
46
- response.expects(:call).once.with(event)
46
+ response.should_receive(:call).once.with(event)
47
47
  subject.register_handler(:event) { |e| response.call e }
48
48
  id = subject.register_handler(:event) { |e| response.call :foo }
49
49
  subject.unregister_handler :event, id
@@ -58,8 +58,8 @@ describe HasGuardedHandlers do
58
58
  end
59
59
 
60
60
  it 'allows for breaking out of handlers' do
61
- response.expects(:handle).once
62
- response.expects(:fail).never
61
+ response.should_receive(:handle).once
62
+ response.should_receive(:fail).never
63
63
  subject.register_handler :event do |_|
64
64
  response.handle
65
65
  throw :halt
@@ -70,7 +70,7 @@ describe HasGuardedHandlers do
70
70
 
71
71
  context 'when multiple handlers are registered' do
72
72
  it "stops at the first matching handler regardless of return value" do
73
- response.expects(:handle).once
73
+ response.should_receive(:handle).once
74
74
  subject.register_handler :event do |_|
75
75
  response.handle
76
76
  false
@@ -80,12 +80,67 @@ describe HasGuardedHandlers do
80
80
  end
81
81
  subject.trigger_handler(:event, event).should be_true
82
82
  end
83
+
84
+ context "and an early one raises" do
85
+ it "raises that exception, and does not execute later handlers" do
86
+ response.should_receive(:handle).never
87
+ subject.register_handler :event do |_|
88
+ raise "Oops"
89
+ end
90
+ subject.register_handler :event do |_|
91
+ response.handle
92
+ end
93
+ expect { subject.trigger_handler(:event, event) }.to raise_error(StandardError, "Oops")
94
+ end
95
+ end
96
+
97
+ context "when broadcast mode is enabled on trigger" do
98
+ it "continues regardless of return value" do
99
+ response.should_receive(:handle).twice
100
+ subject.register_handler :event do |_|
101
+ response.handle
102
+ end
103
+ subject.register_handler :event do |_|
104
+ response.handle
105
+ end
106
+ subject.trigger_handler(:event, event, broadcast: true).should be_true
107
+ end
108
+
109
+ context "and an early one raises" do
110
+ it "swallows that exception, and executes later handlers" do
111
+ response.should_receive(:handle).once
112
+ subject.register_handler :event do |_|
113
+ raise "Oops"
114
+ end
115
+ subject.register_handler :event do |_|
116
+ response.handle
117
+ end
118
+ subject.trigger_handler(:event, event, broadcast: true)
119
+ end
120
+
121
+ it "can invoke a callback on an exception" do
122
+ exception_callback = double 'Exception Callback'
123
+ exception_callback.should_receive(:call).once.with do |e|
124
+ e.should be_a(RuntimeError)
125
+ e.message.should == "Oops"
126
+ end.ordered
127
+ response.should_receive(:handle).once.ordered
128
+ subject.register_handler :event do |_|
129
+ raise "Oops"
130
+ end
131
+ subject.register_handler :event do |_|
132
+ response.handle
133
+ end
134
+ subject.trigger_handler(:event, event, broadcast: true, exception_callback: exception_callback)
135
+ end
136
+ end
137
+ end
83
138
  end
84
139
 
85
140
  it 'allows for passing to the next handler of the same type' do
86
- response.expects(:handle1).once
87
- response.expects(:handle2).once
88
- response.expects(:fail).never
141
+ response.should_receive(:handle1).once
142
+ response.should_receive(:handle2).once
143
+ response.should_receive(:fail).never
89
144
  subject.register_handler :event do |_|
90
145
  response.handle1
91
146
  throw :pass
@@ -99,8 +154,8 @@ describe HasGuardedHandlers do
99
154
 
100
155
  context 'when there is nothing to pass to' do
101
156
  it 'correctly indicates that a handler was called' do
102
- response.expects(:handle1).once
103
- response.expects(:fail).never
157
+ response.should_receive(:handle1).once
158
+ response.should_receive(:fail).never
104
159
  subject.register_handler :event do |_|
105
160
  response.handle1
106
161
  throw :pass
@@ -112,10 +167,9 @@ describe HasGuardedHandlers do
112
167
 
113
168
  describe 'when registering handlers with the same priority' do
114
169
  it 'preserves the order of specification of the handlers' do
115
- sequence = sequence 'handler_priority'
116
- response.expects(:handle1).once.in_sequence sequence
117
- response.expects(:handle2).once.in_sequence sequence
118
- response.expects(:handle3).once.in_sequence sequence
170
+ response.should_receive(:handle1).once.ordered
171
+ response.should_receive(:handle2).once.ordered
172
+ response.should_receive(:handle3).once.ordered
119
173
  subject.register_handler :event do |_|
120
174
  response.handle1
121
175
  throw :pass
@@ -134,10 +188,9 @@ describe HasGuardedHandlers do
134
188
 
135
189
  describe 'when registering handlers with a specified priority' do
136
190
  it 'executes handlers in that order' do
137
- sequence = sequence 'handler_priority'
138
- response.expects(:handle1).once.in_sequence sequence
139
- response.expects(:handle2).once.in_sequence sequence
140
- response.expects(:handle3).once.in_sequence sequence
191
+ response.should_receive(:handle1).once.ordered
192
+ response.should_receive(:handle2).once.ordered
193
+ response.should_receive(:handle3).once.ordered
141
194
  subject.register_handler_with_priority :event, -10 do |_|
142
195
  response.handle3
143
196
  throw :pass
@@ -155,7 +208,7 @@ describe HasGuardedHandlers do
155
208
  end
156
209
 
157
210
  it 'can clear handlers' do
158
- response.expects(:call).once
211
+ response.should_receive(:call).once
159
212
 
160
213
  subject.register_handler(:event) { |_| response.call }
161
214
  subject.trigger_handler :event, event
@@ -171,7 +224,7 @@ describe HasGuardedHandlers do
171
224
  end
172
225
 
173
226
  it 'can be a class' do
174
- response.expects(:call).once
227
+ response.should_receive(:call).once
175
228
  subject.register_handler(:event, GuardedObject) { |_| response.call }
176
229
 
177
230
  subject.trigger_handler :event, GuardedObject.new
@@ -179,7 +232,7 @@ describe HasGuardedHandlers do
179
232
  end
180
233
 
181
234
  it 'can be a module' do
182
- response.expects(:call).once
235
+ response.should_receive(:call).once
183
236
  subject.register_handler(:event, GuardMixin) { |_| response.call }
184
237
 
185
238
  subject.trigger_handler :event, GuardedObject.new
@@ -187,54 +240,54 @@ describe HasGuardedHandlers do
187
240
  end
188
241
 
189
242
  it 'can be a symbol' do
190
- response.expects(:call).once
243
+ response.should_receive(:call).once
191
244
  subject.register_handler(:event, :chat?) { |_| response.call }
192
245
 
193
- event.expects(:chat?).returns true
246
+ event.should_receive(:chat?).and_return true
194
247
  subject.trigger_handler :event, event
195
248
 
196
- event.expects(:chat?).returns false
249
+ event.should_receive(:chat?).and_return false
197
250
  subject.trigger_handler :event, event
198
251
  end
199
252
 
200
253
  it 'can be a hash with string match' do
201
- response.expects(:call).once
254
+ response.should_receive(:call).once
202
255
  subject.register_handler(:event, :body => 'exit') { |_| response.call }
203
256
 
204
- event.expects(:body).returns 'exit'
257
+ event.should_receive(:body).and_return 'exit'
205
258
  subject.trigger_handler :event, event
206
259
 
207
- event.expects(:body).returns 'not-exit'
260
+ event.should_receive(:body).and_return 'not-exit'
208
261
  subject.trigger_handler :event, event
209
262
  end
210
263
 
211
264
  it 'can be a hash with a value' do
212
- response.expects(:call).once
265
+ response.should_receive(:call).once
213
266
  subject.register_handler(:event, :number => 0) { |_| response.call }
214
267
 
215
- event.expects(:number).returns 0
268
+ event.should_receive(:number).and_return 0
216
269
  subject.trigger_handler :event, event
217
270
 
218
- event.expects(:number).returns 1
271
+ event.should_receive(:number).and_return 1
219
272
  subject.trigger_handler :event, event
220
273
  end
221
274
 
222
275
  it 'can be a hash with a regexp' do
223
- response.expects(:call).once
276
+ response.should_receive(:call).once
224
277
  subject.register_handler(:event, :body => /exit/) { |_| response.call }
225
278
 
226
- event.expects(:body).returns 'more than just exit, but exit still'
279
+ event.should_receive(:body).and_return 'more than just exit, but exit still'
227
280
  subject.trigger_handler :event, event
228
281
 
229
- event.expects(:body).returns 'keyword not found'
282
+ event.should_receive(:body).and_return 'keyword not found'
230
283
  subject.trigger_handler :event, event
231
284
 
232
- event.expects(:body).returns nil
285
+ event.should_receive(:body).and_return nil
233
286
  subject.trigger_handler :event, event
234
287
  end
235
288
 
236
289
  it 'can be a hash with arguments' do
237
- response.expects(:call).once
290
+ response.should_receive(:call).once
238
291
  subject.register_handler(:event, [:[], :foo] => :bar) { |_| response.call }
239
292
 
240
293
  subject.trigger_handler :event, {:foo => :bar}
@@ -243,60 +296,60 @@ describe HasGuardedHandlers do
243
296
  end
244
297
 
245
298
  it 'can be a hash with an array' do
246
- response.expects(:call).twice
299
+ response.should_receive(:call).twice
247
300
  subject.register_handler(:event, :type => [:result, :error]) { |_| response.call }
248
301
 
249
- event = mock 'Event'
250
- event.expects(:type).at_least_once.returns :result
302
+ event = double 'Event'
303
+ event.should_receive(:type).at_least(1).and_return :result
251
304
  subject.trigger_handler :event, event
252
305
 
253
- event = mock 'Event'
254
- event.expects(:type).at_least_once.returns :error
306
+ event = double 'Event'
307
+ event.should_receive(:type).at_least(1).and_return :error
255
308
  subject.trigger_handler :event, event
256
309
 
257
- event = mock 'Event'
258
- event.expects(:type).at_least_once.returns :get
310
+ event = double 'Event'
311
+ event.should_receive(:type).at_least(1).and_return :get
259
312
  subject.trigger_handler :event, event
260
313
  end
261
314
 
262
315
  it 'chained are treated like andand (short circuited)' do
263
- response.expects(:call).once
316
+ response.should_receive(:call).once
264
317
  subject.register_handler(:event, :type => :get, :body => 'test') { |_| response.call }
265
318
 
266
- event = mock 'Event'
267
- event.expects(:type).at_least_once.returns :get
268
- event.expects(:body).returns 'test'
319
+ event = double 'Event'
320
+ event.should_receive(:type).at_least(1).and_return :get
321
+ event.should_receive(:body).and_return 'test'
269
322
  subject.trigger_handler :event, event
270
323
 
271
- event = mock 'Event'
272
- event.expects(:type).at_least_once.returns :set
273
- event.expects(:body).never
324
+ event = double 'Event'
325
+ event.should_receive(:type).at_least(1).and_return :set
326
+ event.should_receive(:body).never
274
327
  subject.trigger_handler :event, event
275
328
  end
276
329
 
277
330
  it 'within an Array are treated as oror (short circuited)' do
278
- response.expects(:call).twice
331
+ response.should_receive(:call).twice
279
332
  subject.register_handler(:event, [{:type => :get}, {:body => 'test'}]) { |_| response.call }
280
333
 
281
- event = mock 'Event'
282
- event.expects(:type).at_least_once.returns :set
283
- event.expects(:body).returns 'test'
334
+ event = double 'Event'
335
+ event.should_receive(:type).at_least(1).and_return :set
336
+ event.should_receive(:body).and_return 'test'
284
337
  subject.trigger_handler :event, event
285
338
 
286
- event = mock 'Event'
287
- event.stubs(:type).at_least_once.returns :get
288
- event.expects(:body).never
339
+ event = double 'Event'
340
+ event.should_receive(:type).at_least(1).and_return :get
341
+ event.should_receive(:body).never
289
342
  subject.trigger_handler :event, event
290
343
  end
291
344
 
292
345
  it 'can be a lambda' do
293
- response.expects(:call).once
346
+ response.should_receive(:call).once
294
347
  subject.register_handler(:event, lambda { |e| e.number % 3 == 0 }) { |_| response.call }
295
348
 
296
- event.expects(:number).at_least_once.returns 3
349
+ event.should_receive(:number).once.and_return 3
297
350
  subject.trigger_handler :event, event
298
351
 
299
- event.expects(:number).at_least_once.returns 2
352
+ event.should_receive(:number).once.and_return 2
300
353
  subject.trigger_handler :event, event
301
354
  end
302
355
 
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,6 @@ require 'has_guarded_handlers'
4
4
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
5
5
 
6
6
  RSpec.configure do |config|
7
- config.mock_with :mocha
8
7
  config.filter_run :focus => true
9
8
  config.run_all_when_everything_filtered = true
10
9
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has-guarded-handlers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
5
- prerelease:
4
+ version: 1.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Langfeld
@@ -10,118 +9,90 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-12-08 00:00:00.000000000 Z
12
+ date: 2014-01-16 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: '1.0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - "~>"
29
26
  - !ruby/object:Gem::Version
30
27
  version: '1.0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rspec
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - ">="
37
33
  - !ruby/object:Gem::Version
38
34
  version: 2.5.0
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - ">="
45
40
  - !ruby/object:Gem::Version
46
41
  version: 2.5.0
47
- - !ruby/object:Gem::Dependency
48
- name: mocha
49
- requirement: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
42
  - !ruby/object:Gem::Dependency
64
43
  name: ci_reporter
65
44
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
45
  requirements:
68
- - - ! '>='
46
+ - - ">="
69
47
  - !ruby/object:Gem::Version
70
48
  version: 1.6.3
71
49
  type: :development
72
50
  prerelease: false
73
51
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
52
  requirements:
76
- - - ! '>='
53
+ - - ">="
77
54
  - !ruby/object:Gem::Version
78
55
  version: 1.6.3
79
56
  - !ruby/object:Gem::Dependency
80
57
  name: yard
81
58
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
59
  requirements:
84
- - - ! '>='
60
+ - - ">="
85
61
  - !ruby/object:Gem::Version
86
62
  version: 0.7.0
87
63
  type: :development
88
64
  prerelease: false
89
65
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
66
  requirements:
92
- - - ! '>='
67
+ - - ">="
93
68
  - !ruby/object:Gem::Version
94
69
  version: 0.7.0
95
70
  - !ruby/object:Gem::Dependency
96
71
  name: rake
97
72
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
73
  requirements:
100
- - - ! '>='
74
+ - - ">="
101
75
  - !ruby/object:Gem::Version
102
76
  version: '0'
103
77
  type: :development
104
78
  prerelease: false
105
79
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
80
  requirements:
108
- - - ! '>='
81
+ - - ">="
109
82
  - !ruby/object:Gem::Version
110
83
  version: '0'
111
84
  - !ruby/object:Gem::Dependency
112
85
  name: guard-rspec
113
86
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
87
  requirements:
116
- - - ! '>='
88
+ - - ">="
117
89
  - !ruby/object:Gem::Version
118
90
  version: '0'
119
91
  type: :development
120
92
  prerelease: false
121
93
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
94
  requirements:
124
- - - ! '>='
95
+ - - ">="
125
96
  - !ruby/object:Gem::Version
126
97
  version: '0'
127
98
  description: Allow an object's API to provide flexible handler registration, storage
@@ -132,9 +103,9 @@ executables: []
132
103
  extensions: []
133
104
  extra_rdoc_files: []
134
105
  files:
135
- - .gitignore
136
- - .rspec
137
- - .travis.yml
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".travis.yml"
138
109
  - CHANGELOG.md
139
110
  - Gemfile
140
111
  - Guardfile
@@ -148,33 +119,26 @@ files:
148
119
  - spec/spec_helper.rb
149
120
  homepage: http://github.com/adhearsion/has-guarded-handlers
150
121
  licenses: []
122
+ metadata: {}
151
123
  post_install_message:
152
124
  rdoc_options: []
153
125
  require_paths:
154
126
  - lib
155
127
  required_ruby_version: !ruby/object:Gem::Requirement
156
- none: false
157
128
  requirements:
158
- - - ! '>='
129
+ - - ">="
159
130
  - !ruby/object:Gem::Version
160
131
  version: '0'
161
- segments:
162
- - 0
163
- hash: -3810858558252593489
164
132
  required_rubygems_version: !ruby/object:Gem::Requirement
165
- none: false
166
133
  requirements:
167
- - - ! '>='
134
+ - - ">="
168
135
  - !ruby/object:Gem::Version
169
136
  version: '0'
170
- segments:
171
- - 0
172
- hash: -3810858558252593489
173
137
  requirements: []
174
138
  rubyforge_project: has-guarded-handlers
175
- rubygems_version: 1.8.24
139
+ rubygems_version: 2.2.0
176
140
  signing_key:
177
- specification_version: 3
141
+ specification_version: 4
178
142
  summary: A library for associating a set of event handlers, complete with guards,
179
143
  with a Ruby object
180
144
  test_files: