diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-25 16:34:06 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-25 16:34:06 -0700 |
commit | d1b9a134cfc6ca543dab594f87e6b7c1ea0050f5 (patch) | |
tree | 0aeb1498d99c4e1528f2a6fc0bf2c0fa3d01f15f | |
parent | 67b2841fbeb6db33dd78a95dd61329a8a56fc7c0 (diff) | |
download | rails-d1b9a134cfc6ca543dab594f87e6b7c1ea0050f5.tar.gz rails-d1b9a134cfc6ca543dab594f87e6b7c1ea0050f5.tar.bz2 rails-d1b9a134cfc6ca543dab594f87e6b7c1ea0050f5.zip |
move response allocation to the class level
we don't need an instance to figure out what type of response to
allocate. Later we'll pull this up the stack and pass the response
object down
-rw-r--r-- | actionpack/lib/action_controller/metal/live.rb | 21 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/rack_delegation.rb | 9 |
2 files changed, 22 insertions, 8 deletions
diff --git a/actionpack/lib/action_controller/metal/live.rb b/actionpack/lib/action_controller/metal/live.rb index 58150cd9a9..69583f8ab4 100644 --- a/actionpack/lib/action_controller/metal/live.rb +++ b/actionpack/lib/action_controller/metal/live.rb @@ -33,6 +33,20 @@ module ActionController # the main thread. Make sure your actions are thread safe, and this shouldn't # be a problem (don't share state across threads, etc). module Live + extend ActiveSupport::Concern + + module ClassMethods + def make_response!(request) + if request.env["HTTP_VERSION"] == "HTTP/1.0" + super + else + Live::Response.new.tap do |res| + res.request = request + end + end + end + end + # This class provides the ability to write an SSE (Server Sent Event) # to an IO stream. The class is initialized with a stream and can be used # to either write a JSON string or an object which can be converted to JSON. @@ -311,12 +325,7 @@ module ActionController end def set_response!(request) - if request.env["HTTP_VERSION"] == "HTTP/1.0" - super - else - @_response = Live::Response.new - @_response.request = request - end + @_response = self.class.make_response! request end end end diff --git a/actionpack/lib/action_controller/metal/rack_delegation.rb b/actionpack/lib/action_controller/metal/rack_delegation.rb index ae9d89cc8c..eb8bca1d92 100644 --- a/actionpack/lib/action_controller/metal/rack_delegation.rb +++ b/actionpack/lib/action_controller/metal/rack_delegation.rb @@ -12,6 +12,12 @@ module ActionController def build_with_env(env = {}) #:nodoc: new.tap { |c| c.set_request! ActionDispatch::Request.new(env) } end + + def make_response!(request) + ActionDispatch::Response.new.tap do |res| + res.request = request + end + end end def set_request!(request) #:nodoc: @@ -31,8 +37,7 @@ module ActionController private def set_response!(request) - @_response = ActionDispatch::Response.new - @_response.request = request + @_response = self.class.make_response! request end end end |