module Peek::ActiveRecord::ControllerHelpers
Protected Instance Methods
inject_peek_activerecord(&block)
click to toggle source
# File lib/peek/activerecord/controller_helpers.rb, line 38 def inject_peek_activerecord(&block) return block.call unless peek_activerecord_enabled? ret = nil queries = [] subscriber = ActiveSupport::Notifications.subscribe "sql.active_record" do |*args| event = ActiveSupport::Notifications::Event.new *args queries << event end ret = block.call peek_activerecord_append_queries_to_response(queries) ret ensure ActiveSupport::Notifications.unsubscribe(subscriber) if subscriber end
peek_activerecord_append_queries_to_response(queries)
click to toggle source
# File lib/peek/activerecord/controller_helpers.rb, line 53 def peek_activerecord_append_queries_to_response(queries) if response.content_type =~ %r|text/html| output = <<-EOS <div class=ar_instrumentation id=peek_activerecord_table> <ul> <li> <ul class=row> <li class=duration-header> Duration </li> <li class=cached-header> Cached </li> <li class=sql-header> SQL </li> </ul> </li> EOS queries.each do |query| output << <<-EOS <li> <ul class=row> <li class=duration-data> #{"%.3f" % query.duration}ms </li> <li class=cache-data> #{query.payload[:name] == "CACHE"} </li> <li class=sql-data> #{pygmentized_sql(query.payload[:sql])} </li> </ul> </li> EOS end output << "</table>" response.body += "<div id='peek-activerecord-modal'>#{output}</div>".html_safe end end
peek_activerecord_enabled?()
click to toggle source
This can be overwritten in ApplicationController to disable query tracking separately from peek
# File lib/peek/activerecord/controller_helpers.rb, line 34 def peek_activerecord_enabled? peek_enabled? end
pygmentized_sql(sql)
click to toggle source
# File lib/peek/activerecord/controller_helpers.rb, line 24 def pygmentized_sql(sql) if pygments_enabled? Pygments.highlight(sql, :lexer => 'sql') else "#{Rack::Utils.escape_html(code)}" end end
pygments_enabled?()
click to toggle source
# File lib/peek/activerecord/controller_helpers.rb, line 20 def pygments_enabled? defined?(Pygments) end