rails query inner active sql ruby-on-rails console

query - Deshabilitar el registro de Rails SQL en la consola



rails where like (7)

¿Hay alguna forma de deshabilitar el registro de consultas SQL cuando estoy ejecutando comandos en la consola? Idealmente, sería genial si pudiera deshabilitarlo y volver a habilitarlo con un comando en la consola.

Estoy tratando de depurar algo y usando "pone" para imprimir algunos datos relevantes. Sin embargo, el resultado de la consulta SQL hace que sea difícil de leer.

Edit: encontré otra solución, ya que configurar el registrador en nil a veces generaba un error, si algo más que mi código intentaba llamar a logger.warn

En lugar de configurar el registrador en nil , puede establecer el nivel del registrador en 1 .

ActiveRecord::Base.logger.level = 1 # or Logger::INFO


Aquí hay una variación que considero un poco más limpia, que todavía permite otros registros de AR. En config / environment / development.rb:

config.after_initialize do ActiveRecord::Base.logger = Rails.logger.clone ActiveRecord::Base.logger.level = Logger::INFO end


En Rails 3.2 estoy haciendo algo como esto en config / environment / development.rb:

module MyApp class Application < Rails::Application console do ActiveRecord::Base.logger = Logger.new("#{Rails.root}/log/development.log") end end end


En caso de que alguien quiera realmente eliminar el registro de sentencias de SQL (sin cambiar el nivel de registro, y mientras mantiene el registro de sus modelos de AR):

La línea que escribe en el registro (en Rails 3.2.16, de todos modos) es la llamada a debug en lib/active_record/log_subscriber.rb:50 .

Ese método de depuración está definido por ActiveSupport::LogSubscriber .

Entonces podemos eliminar el registro sobrescribiéndolo así:

module ActiveSupport class LogSubscriber def debug(*args, &block) end end end


Para Rails 4 puedes poner lo siguiente en un archivo de entorno:

# /config/environments/development.rb config.active_record.logger = nil


Para apagarlo:

old_logger = ActiveRecord::Base.logger ActiveRecord::Base.logger = nil

Para volver a encenderlo:

ActiveRecord::Base.logger = old_logger


Puede que esta no sea una solución adecuada para la consola, pero Rails tiene un método para este problema: Logger#silence

ActiveRecord::Base.logger.silence do # the stuff you want to be silenced end


Utilicé esto: config.log_level = :info edit-in config/environments/performance.rb

Trabajando muy bien para mí, rechazando la salida de SQL y mostrando solo la representación y la información importante.