¿Hay alguna forma de deshabilitar el registro de consultas SQL cuando ejecuto 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 estoy usando "puso" para imprimir algunos datos relevantes. Sin embargo, el resultado de la consulta SQL hace que sea difícil de leer.
Editar: encontré otra solución, ya que establecer el registrador en nulo a veces generaba un error, si algo más que mi código intentaba llamar a logger.warn
En lugar de configurar el registrador nil
, puede establecer el nivel del registrador en 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
Gylaz
fuente
fuente
since setting the logger to nil sometimes raised an error
yap ..rake db:migrate
Respuestas:
Para apagarlo:
Para volver a encenderlo:
fuente
.irbrc
, que es básicamente.bashrc
para la consola de Rails. de hecho, puede hacer casi cualquier cosa.irbrc
si lo desea, por ejemplo, coloreado de sintaxis, historial, editar código en vi y luego ejecutarlo en la consola de Rails, etc. verifique mi gemautility_belt
si está en Ruby 1.8 o en el puerto Ruby 1.9 llamadoflyrb
.irbrc
es como.bashrc
pero en realidad para su línea de comandos interactiva ruby . No es una cosa de rieles. Me imagino que probablemente obtendrá errores si intenta hacer referencia a las clases de rails cuando estaba ejecutando irb fuera de un entorno de rails.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
es una respuesta mucho mejor ya que no generará excepciones si usa .info y otros.Aquí hay una variación que considero algo más limpia, que todavía permite otros posibles registros desde AR. En config / entornos / development.rb:
fuente
Puede que esta no sea una solución adecuada para la consola, pero Rails tiene un método para este problema: Logger # silence
fuente
Para Rails 4 puede poner lo siguiente en un archivo de entorno:
fuente
En caso de que alguien quiere realmente noquear a la tala instrucción SQL (sin cambiar el nivel de registro, y al mismo tiempo mantener el registro de sus modelos AR):
La línea que escribe en el registro (en Rails 3.2.16, de todos modos) es la llamada a
debug
inlib/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í:
fuente
Rails.logger.debug
declaraciones.Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Tenga en cuenta que el parche de mono está mal visto por algunos. Probablemente no debería verificar esto en su código de producción.Usé esto:
config.log_level = :info
editar-enconfig/environments/performance.rb
Funciona muy bien para mí, rechaza la salida de SQL y muestra solo renderizado e información importante.
fuente
En Rails 3.2 estoy haciendo algo como esto en config / environment / development.rb:
fuente
Como un FYI, en Rails 2 puedes hacer
Obviamente, las llaves podrían reemplazarse con un
do end
bloque si lo desea.fuente