lib/phlex/rails/streaming.rb in phlex-rails-1.2.2 vs lib/phlex/rails/streaming.rb in phlex-rails-2.0.0.beta1

- old
+ new

@@ -5,54 +5,56 @@ include ActionController::Live private def stream(view, last_modified: Time.now.httpdate, filename: nil) - set_stream_headers(last_modified: last_modified) + __phlex_set_stream_headers__(last_modified:) case view when Phlex::HTML - stream_html(view) + __phlex_stream_html__(view) when Phlex::CSV - stream_csv(view, filename: filename) + __phlex_stream_csv__(view, filename:) + else + raise Phlex::ArgumentError end end - def set_stream_headers(last_modified:) + def __phlex_set_stream_headers__(last_modified:) headers.delete("Content-Length") headers["X-Accel-Buffering"] = "no" headers["Cache-Control"] = "no-transform" headers["Last-Modified"] = last_modified end - def stream_csv(view, filename:) + def __phlex_stream_csv__(view, filename:) headers["Content-Type"] = "text/csv; charset=utf-8" headers["Content-Disposition"] = "attachment; filename=\"#{filename || view.filename}\"" self.response_body = Enumerator.new do |buffer| - view.call(buffer, view_context: view_context) + view.call(buffer, view_context:) end end - def stream_html(view) + def __phlex_stream_html__(view) headers["Content-Type"] = "text/html; charset=utf-8" # Ensure we have a session id. # See https://github.com/rails/rails/issues/51424 if session.id.nil? session[:phlex_init_session] = 1 session.delete(:phlex_init_session) end self.response_body = Enumerator.new do |buffer| - view.call(buffer, view_context: view_context) + view.call(buffer, view_context:) rescue => e raise(e) if Rails.env.test? debug_middleware = ActionDispatch::DebugExceptions.new( proc { |_env| raise(e) }, - response_format: :html + response_format: :html, ) _debug_status, _debug_headers, debug_body = debug_middleware.call(request.env) if Rails.env.development?