¿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 erroryap ..rake db:migrateRespuestas:
Para apagarlo:
Para volver a encenderlo:
fuente
.irbrc, que es básicamente.bashrcpara la consola de Rails. de hecho, puede hacer casi cualquier cosa.irbrcsi 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_beltsi está en Ruby 1.8 o en el puerto Ruby 1.9 llamadoflyrb.irbrces como.bashrcpero 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.rbActiveRecord::Base.logger.level = 1es 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
debuginlib/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.debugdeclaraciones.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 = :infoeditar-enconfig/environments/performance.rbFunciona 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 endbloque si lo desea.fuente