module Sqlogger::Monkey::IncludeActiveRecordLogSubscriber
Public Class Methods
included(base)
click to toggle source
# File lib/sqlogger/monkey/include_active_record_log_subscriber.rb, line 4 def self.included base base.class_eval do alias_method :sql_without_sqlogger, :sql alias_method :sql, :sql_with_sqlogger end end
Public Instance Methods
sql_with_sqlogger(event)
click to toggle source
# File lib/sqlogger/monkey/include_active_record_log_subscriber.rb, line 11 def sql_with_sqlogger event sql_without_sqlogger event payload = event.payload binds = "" unless (payload[:binds] || []).empty? casted_params = sqlogger_type_casted_binds payload[:binds], payload[:type_casted_binds] binds = " " + payload[:binds].zip(casted_params).map { |attr, value| sqlogger_render_bind attr, value }.inspect end Sqlogger::Base::logger( sql: payload[:sql], binds: binds, dulation: event.duration.round(1), name: "#{"CACHE " if payload[:cached]}#{payload[:name]}" ) end
Private Instance Methods
sqlogger_render_bind(attr, type_casted_value)
click to toggle source
for support under rails 5.1.0
# File lib/sqlogger/monkey/include_active_record_log_subscriber.rb, line 40 def sqlogger_render_bind attr, type_casted_value value = if attr.type.binary? && attr.value "<#{attr.value_for_database.to_s.bytesize} bytes of binary data>" else type_casted_value end [attr.name, value] end
sqlogger_type_casted_binds(binds, casted_binds)
click to toggle source
for support under rails 5.1.0
# File lib/sqlogger/monkey/include_active_record_log_subscriber.rb, line 33 def sqlogger_type_casted_binds binds, casted_binds casted_binds || binds.map do |attr| ActiveRecord::Base.connection.type_cast attr.value_for_database end end