ensure responses get passed through even if not running under thin

This commit is contained in:
John Bintz 2012-09-19 10:48:06 -04:00
parent 4a658a84d8
commit fd5a05afae
3 changed files with 25 additions and 19 deletions

View File

@ -18,7 +18,7 @@ class FileStreamer
end
end
# then respond with a FileStreamer
# then respond with a `FileStreamer`
def call(env)
# ... do stuff ...
@ -44,3 +44,5 @@ use Rack::EMStream do |exception, environment|
end
```
I'm still pretty n00b to async stuff, so if you have suggestions, let me know!

View File

@ -21,27 +21,31 @@ module Rack
result[2].close if result[2].respond_to?(:close)
EM.next_tick {
env['async.callback'].call [ result[0], result[1], self ]
if env['async.callback']
EM.next_tick {
env['async.callback'].call [ result[0], result[1], self ]
begin
result[2].each { |data|
EM.next_tick {
begin
@callback.call(data)
rescue => e
@callback.call(@block.call(e, env)) if @block
end
begin
result[2].each { |data|
EM.next_tick {
begin
@callback.call(data)
rescue => e
@callback.call(@block.call(e, env)) if @block
end
}
}
}
rescue => e
@callback.call(@block.call(e, env)) if @block
end
rescue => e
@callback.call(@block.call(e, env)) if @block
end
EM.next_tick { succeed }
}
EM.next_tick { succeed }
}
throw :async
throw :async
else
result
end
end
end
end

View File

@ -1,5 +1,5 @@
module Rack
class EMStream
VERSION = "0.1.3"
VERSION = "0.1.4"
end
end