Harbor::Contrib::Debug
USAGE: Add the following code to your config.ru, just before ‘run’
if ENV['ENVIRONMENT'] == 'development'
require "harbor/contrib/debug"
DataObjects::Postgres.logger = Logging::Logger.root
use Harbor::Contrib::Debug
end
Public Class Methods
Public Instance Methods
call(env)
# File lib/harbor/contrib/debug.rb, line 18 18: def call(env) 19: start_time = Time.now 20: status, headers, body = @app.call(env) 21: load_time = Time.now - start_time 22: 23: appenders = Logging::Logger.root.instance_variable_get(:@appenders) 24: logger = appenders.find { |appender| appender.name == "harbor_debug_messages" } 25: messages = logger.messages.dup 26: logger.messages.clear 27: 28: return [status, headers, body] unless (headers["Content-Type"] =~ /html/) && body.is_a?(String) 29: 30: debugger = @@template.dup 31: 32: if body["jquery"] 33: debugger.gsub!("{{jquery}}", "") 34: else 35: debugger.gsub!("{{jquery}}", '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>') 36: end 37: 38: debugger.gsub!("{{load_time}}", "%2.2f" % load_time) 39: 40: queries = messages.map do |level, message| 41: ("<p>[#{@levels[level]}] " + message.gsub("<", "<") + "</p>") if message =~ /^\(/ 42: end.compact 43: 44: messages = messages.map do |level, message| 45: ("<p>[#{@levels[level]}] " + message.gsub("<", "<") + "</p>") if message !~ /^\(/ 46: end.compact 47: 48: debugger.gsub!("{{query_count}}", "%s" % queries.size) 49: debugger.gsub!("{{message_count}}", "%s" % messages.size) 50: 51: if messages.any? 52: debugger.gsub!("{{messages}}", '<div class="messages" style="display: none">' + messages.join("\n") + '</div>') 53: else 54: debugger.gsub!("{{messages}}", "") 55: end 56: 57: if queries.any? 58: debugger.gsub!("{{queries}}", '<div class="queries" style="display: none">' + queries.join("\n") + '</div>') 59: else 60: debugger.gsub!("{{queries}}", "") 61: end 62: 63: body.gsub!("</body>", debugger + "</body>") 64: headers["Content-Length"] = body.length.to_s 65: 66: [status, headers, body] 67: end