restrack 1.8.1 → 1.8.2

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.
@@ -1,5 +1,19 @@
1
1
  require 'eventmachine'
2
2
 
3
+ class DeferrableBody
4
+ include EventMachine::Deferrable
5
+
6
+ def call(body)
7
+ body.each do |chunk|
8
+ @body_callback.call(chunk)
9
+ end
10
+ end
11
+
12
+ def each(&blk)
13
+ @body_callback = blk
14
+ end
15
+ end
16
+
3
17
  module RESTRack
4
18
  class AsyncWebService
5
19
  AsyncResponse = [-1, {}, []].freeze
@@ -12,12 +26,12 @@ module RESTRack
12
26
 
13
27
  # Handle requests in the Rack way.
14
28
  def call( env )
15
- EventMachine::defer do
16
- resource_request = RESTRack::ResourceRequest.new( :request => Rack::Request.new(env) )
17
- unless @request_hook.nil? or (RESTRack::CONFIG.has_key?(:PRE_PROCESSOR_DISABLED) and RESTRack::CONFIG[:PRE_PROCESSOR_DISABLED])
18
- @request_hook.pre_processor(resource_request)
19
- end
20
- response = RESTRack::Response.new(resource_request)
29
+ resource_request = RESTRack::ResourceRequest.new( :request => Rack::Request.new(env) )
30
+ unless @request_hook.nil? or (RESTRack::CONFIG.has_key?(:PRE_PROCESSOR_DISABLED) and RESTRack::CONFIG[:PRE_PROCESSOR_DISABLED])
31
+ @request_hook.pre_processor(resource_request)
32
+ end
33
+ response = RESTRack::Response.new(resource_request)
34
+ unless resource_request.requires_async_defer
21
35
  unless @request_hook.nil? or (RESTRack::CONFIG.has_key?(:POST_PROCESSOR_DISABLED) and RESTRack::CONFIG[:POST_PROCESSOR_DISABLED])
22
36
  @request_hook.post_processor(response)
23
37
  end
@@ -87,6 +87,14 @@ module RESTRack
87
87
  @mime_type.to_s
88
88
  end
89
89
 
90
+ def requires_async_defer
91
+ @requires_async_defer ||= RESTRack::CONFIG[:REQUIRES_ASYNC_DEFER] || false
92
+ end
93
+
94
+ def requires_async_defer=(boolean)
95
+ @require_async_defer = boolean
96
+ end
97
+
90
98
  private
91
99
  def get_request_id
92
100
  t = Time.now
@@ -1,3 +1,3 @@
1
1
  module RESTRack
2
- VERSION = "1.8.1"
2
+ VERSION = "1.8.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restrack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-23 00:00:00.000000000 Z
12
+ date: 2013-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack