class Rack::WebProfiler::Engine
Public Class Methods
process(request, body, status, headers)
click to toggle source
Process request.
@param request [Rack::WebProfiler::Request] @param body [Array, String] @param status [Integer] @param headers [Hash]
@return [Rack::WebProfiler::Response, Rack::Response]
# File lib/rack/web_profiler/engine.rb, line 13 def process(request, body, status, headers) response = Rack::WebProfiler::Response.new(request, body, status, headers) record = collect!(request, response) @token = record.token @url = WebProfiler::Router.url_for_toolbar(record.token) response.header["X-RackWebProfiler-Token"] = @token response.header["X-RackWebProfiler-Url"] = WebProfiler::Router.url_for_profiler(record.token) return response if !headers[CONTENT_TYPE].nil? and !headers[CONTENT_TYPE].include? "text/html" response = Rack::Response.new([], status, response.headers) if body.respond_to?(:each) body.each { |fragment| response.write inject(fragment) } elsif body.is_a? String response.write inject(body) end response end
process_exception(request)
click to toggle source
Process an exception.
@param request [Rack::WebProfiler::Request]
@return [Rack::Response]
# File lib/rack/web_profiler/engine.rb, line 41 def process_exception(request) process(request, [], 500, {}) end
Private Class Methods
collect!(request, response)
click to toggle source
Collect
@param request [Rack::WebProfiler::Request] @param response [Rack::Response]
@return [WebProfiler::Model::CollectionRecord]
# File lib/rack/web_profiler/engine.rb, line 53 def collect!(request, response) processor = Processor.new(request.clone.freeze, response.clone.freeze) processor.save! processor.record end
inject(body)
click to toggle source
Inject the webprofiler
@param body [String]
# File lib/rack/web_profiler/engine.rb, line 63 def inject(body) body.gsub(%r{</body>}, template.result(binding) + "</body>") end
template()
click to toggle source
Get the javascript code template to inject.
@return [String]
# File lib/rack/web_profiler/engine.rb, line 70 def template @template ||= WebProfiler::View.new("async.erb") end