class SafePgMigrations::VerboseSqlLogger

Public Instance Methods

setup() click to toggle source
# File lib/safe-pg-migrations/plugins/verbose_sql_logger.rb, line 5
def setup
  @activerecord_logger_was = ActiveRecord::Base.logger
  @verbose_query_logs_was = ActiveRecord::Base.verbose_query_logs
  @colorize_logging_was = ActiveRecord::LogSubscriber.colorize_logging

  disable_marginalia if defined?(Marginalia)

  stdout_logger = Logger.new($stdout, formatter: ->(_severity, _time, _progname, query) { "#{query}\n" })
  ActiveRecord::Base.logger = stdout_logger
  ActiveRecord::LogSubscriber.colorize_logging = colorize_logging?
  # Do not output caller method, we know it is coming from the migration
  ActiveRecord::Base.verbose_query_logs = false
  self
end
teardown() click to toggle source
# File lib/safe-pg-migrations/plugins/verbose_sql_logger.rb, line 20
def teardown
  ActiveRecord::Base.verbose_query_logs = @verbose_query_logs_was
  ActiveRecord::LogSubscriber.colorize_logging = @colorize_logging_was
  ActiveRecord::Base.logger = @activerecord_logger_was
  enable_marginalia if defined?(Marginalia)
end

Private Instance Methods

colorize_logging?() click to toggle source
# File lib/safe-pg-migrations/plugins/verbose_sql_logger.rb, line 29
def colorize_logging?
  defined?(Rails) && Rails.env.development?
end
disable_marginalia() click to toggle source

Marginalia annotations will most likely pollute the output

# File lib/safe-pg-migrations/plugins/verbose_sql_logger.rb, line 34
def disable_marginalia
  @marginalia_components_were = Marginalia::Comment.components
  Marginalia::Comment.components = []
end
enable_marginalia() click to toggle source
# File lib/safe-pg-migrations/plugins/verbose_sql_logger.rb, line 39
def enable_marginalia
  Marginalia::Comment.components = @marginalia_components_were
end