goat 0.2.8 → 0.2.9

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.
Files changed (2) hide show
  1. data/lib/goat.rb +19 -0
  2. metadata +3 -3
@@ -272,6 +272,7 @@ module Goat
272
272
 
273
273
  def initialize
274
274
  @before_handler_bindings = {}
275
+ @after_handler_bindings = {}
275
276
  end
276
277
 
277
278
  class ::Proc
@@ -309,12 +310,22 @@ module Goat
309
310
  @before_handler_bindings[handler] ||= App.bind(handler)
310
311
  end
311
312
 
313
+ def after_handler_binding(handler)
314
+ @after_handler_bindings[handler] ||= App.bind(handler)
315
+ end
316
+
312
317
  def run_before_handlers(app)
313
318
  app.class.before_handlers.each do |handler|
314
319
  before_handler_binding(handler).call(app)
315
320
  end
316
321
  end
317
322
 
323
+ def run_after_handlers(app)
324
+ app.class.after_handlers.each do |handler|
325
+ after_handler_binding(handler).call(app)
326
+ end
327
+ end
328
+
318
329
  def resp_for_error(e, app)
319
330
  resp = nil
320
331
 
@@ -373,6 +384,8 @@ module Goat
373
384
  rescue Exception => e
374
385
  resp = resp_for_error(e, app)
375
386
  end
387
+
388
+ run_after_handlers(app)
376
389
 
377
390
  resp.to_a
378
391
  end
@@ -524,6 +537,7 @@ module Goat
524
537
  @@active_pages = {}
525
538
  @@active_page_queue = Queue.new
526
539
  @@before_handlers = []
540
+ @@after_handlers = []
527
541
 
528
542
  def active_pages; @@active_pages; end
529
543
  def active_page_queue; @@active_page_queue; end
@@ -571,10 +585,15 @@ module Goat
571
585
  end
572
586
 
573
587
  def before_handlers; @@before_handlers; end
588
+ def after_handlers; @@after_handlers; end
574
589
 
575
590
  def before(&blk)
576
591
  before_handlers << blk
577
592
  end
593
+
594
+ def after(&blk)
595
+ after_handlers << blk
596
+ end
578
597
 
579
598
  def enable_notifications(opts={})
580
599
  NotificationCenter.configure(opts)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goat
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 8
10
- version: 0.2.8
9
+ - 9
10
+ version: 0.2.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Patrick Collison