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
This commit is contained in:
parent
67b2841fbe
commit
d1b9a134cf
@ -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 @@ def response_body=(body)
|
||||
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
|
||||
|
@ -12,6 +12,12 @@ module ClassMethods
|
||||
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 @@ def reset_session
|
||||
private
|
||||
|
||||
def set_response!(request)
|
||||
@_response = ActionDispatch::Response.new
|
||||
@_response.request = request
|
||||
@_response = self.class.make_response! request
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user