Methods

Constants

IGNORE_PAYLOAD_NAMES = ["SCHEMA", "EXPLAIN"]

Class Public methods

reset_runtime()

📝 Source code
# File activerecord/lib/active_record/log_subscriber.rb, line 23
    def self.reset_runtime
      ActiveRecord.deprecator.warn(<<-MSG.squish)
        ActiveRecord::LogSubscriber.reset_runtime is deprecated and will be removed in Rails 7.2.
      MSG
      ActiveRecord::RuntimeRegistry.reset
    end
🔎 See on GitHub

runtime()

📝 Source code
# File activerecord/lib/active_record/log_subscriber.rb, line 16
    def self.runtime
      ActiveRecord.deprecator.warn(<<-MSG.squish)
        ActiveRecord::LogSubscriber.runtime is deprecated and will be removed in Rails 7.2.
      MSG
      ActiveRecord::RuntimeRegistry.sql_runtime
    end
🔎 See on GitHub

runtime=(value)

📝 Source code
# File activerecord/lib/active_record/log_subscriber.rb, line 9
    def self.runtime=(value)
      ActiveRecord.deprecator.warn(<<-MSG.squish)
        ActiveRecord::LogSubscriber.runtime= is deprecated and will be removed in Rails 7.2.
      MSG
      ActiveRecord::RuntimeRegistry.sql_runtime = value
    end
🔎 See on GitHub

Instance Public methods

sql(event)

📝 Source code
# File activerecord/lib/active_record/log_subscriber.rb, line 39
    def sql(event)
      payload = event.payload

      return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])

      name = if payload[:async]
        "ASYNC #{payload[:name]} (#{payload[:lock_wait].round(1)}ms) (db time #{event.duration.round(1)}ms)"
      else
        "#{payload[:name]} (#{event.duration.round(1)}ms)"
      end
      name  = "CACHE #{name}" if payload[:cached]
      sql   = payload[:sql]
      binds = nil

      if payload[:binds]&.any?
        casted_params = type_casted_binds(payload[:type_casted_binds])

        binds = []
        payload[:binds].each_with_index do |attr, i|
          attribute_name = if attr.respond_to?(:name)
            attr.name
          elsif attr.respond_to?(:[]) && attr[i].respond_to?(:name)
            attr[i].name
          else
            nil
          end

          filtered_params = filter(attribute_name, casted_params[i])

          binds << render_bind(attr, filtered_params)
        end
        binds = binds.inspect
        binds.prepend("  ")
      end

      name = colorize_payload_name(name, payload[:name])
      sql  = color(sql, sql_color(sql), bold: true) if colorize_logging

      debug "  #{name}  #{sql}#{binds}"
    end
🔎 See on GitHub

strict_loading_violation(event)

📝 Source code
# File activerecord/lib/active_record/log_subscriber.rb, line 30
    def strict_loading_violation(event)
      debug do
        owner = event.payload[:owner]
        reflection = event.payload[:reflection]
        color(reflection.strict_loading_violation_message(owner), RED)
      end
    end
🔎 See on GitHub