restrack 1.8.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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