¿Cómo se puede ocultar la salida de la base de datos en la consola Rails?

103

En la versión más reciente de Rails, supongo que a partir de la 3, las consultas de la base de datos se envían a la consola. Esto es útil la mayor parte del tiempo, pero ¿cómo puedes ocultarlo cuando no quieres verlo?

Roger Ertesvag
fuente

Respuestas:

177

Una mejor manera de hacer esto es escribiendo esto en la consola:

ActiveRecord::Base.logger.level = 1 

ya que evita problemas al intentar usar un puntero a un registrador que está configurado en nil (fuente: Desactivar el inicio de sesión de Rails SQL en la consola )

Para volver a encenderlo

ActiveRecord::Base.logger.level = 0
Aaron B. Russell
fuente
31
Gracias. Y para volver a encenderla, ActiveRecord::Base.logger.level = 0.
thebenedict
¿Alguna idea de cómo hacer esto con Mongoid?
Jesse Farmer
29
ActiveRecord::Base.logger = nil

desde aqui

samvermette
fuente
6
Esto puede hacer que NoMethodErrors con ActiveRecord espere ActiveRecord::Base.loggerser un objeto en lugar de nil.
Aaron B. Russell
9

Respuesta corta ... En el archivo development.rb cambie o agregue el valor de config.log_levelpara que haya una línea como

config.log_level = :info
madth3
fuente
1
No, esto no parece tener ningún impacto en lo que sucede en la consola. Además, preferiría una solución que no requiera que cambie los archivos del proyecto.
Roger Ertesvag
Ok, la solución me funciona con webrick pero es posible que esté usando otro servidor o ejecutándose en modos de producción o prueba.
madth3
3
Funciona para cambiar el contenido de los archivos de registro. Pero la pregunta es sobre la consola de rieles, no sobre los archivos de registro.
Roger Ertesvag
6

De un amigo mío:

your_query; nil
tatiCarvalho
fuente
1
Para mejorar la calidad de su publicación, incluya cómo y por qué su publicación resolverá el problema.
Mick MacCallum
7
Esto evitará que su consola ruby ​​descargue los resultados de las expresiones en la consola, pero no evitará que ActiveRecord descargue información SQL en el registrador de rieles.
eremzeit
1
Para los comentaristas anteriores: esto responde a la pregunta, y es la única respuesta que funcionó para mí, ¿qué más se podría desear?
valk
3
No creo que esto responda a la pregunta en absoluto. como dijo @eremzeit, esto no evitará que todas las consultas SQL se vuelvan a su consola, solo evitará que se imprima el valor de retorno de ese comando ...
opsidao
1
No responde la pregunta, pero es útil para no repetir los resultados
Rutger
4

En Rails 3.2, configuración

config.logger.level = Logger::INFO

funcionó bien para mí para desactivar la salida SQL.

Brokenbeatnik
fuente
Sin embargo, ¿esto todavía registra la salida SQL en el archivo de registro?
Joshua Pinter
-2

Veo que ya obtuvo la respuesta necesaria, aunque me gustaría recomendarle la gema de los 'activos silenciosos', la mayoría de los datos de registro serán la compilación de activos y las inclusiones, esta gema eliminará eso y aún generará las consultas y el comportamiento de los datos.

Que te diviertas

Dennis
fuente
1
La pregunta es acerca de la salida de la consola, no los archivos de registro
Roger Ertesvåg