Como você pode ocultar a saída do banco de dados no console Rails?

103

Na versão mais recente do Rails, estou supondo da 3 para cima, as consultas de banco de dados são enviadas para o console. Isso é útil na maioria das vezes, mas como você pode ocultá-lo quando não deseja vê-lo?

Roger Ertesvag
fonte

Respostas:

177

A melhor maneira de fazer isso é digitando no console:

ActiveRecord::Base.logger.level = 1 

uma vez que evita problemas ao tentar usar um ponteiro para um registrador que está definido como nulo (fonte: Desativar o registro Rails SQL no console )

Para ligar novamente

ActiveRecord::Base.logger.level = 0
Aaron B. Russell
fonte
31
Obrigado. E para ligá-lo novamente ActiveRecord::Base.logger.level = 0,.
thebenedict de
Alguma ideia de como fazer isso com o Mongoid?
Jesse Farmer
29
ActiveRecord::Base.logger = nil

a partir daqui

samvermette
fonte
6
Isso pode fazer NoMethodErrorcom que s com ActiveRecord esperem ActiveRecord::Base.loggerser um objeto em vez de nil.
Aaron B. Russell
9

Resposta curta ... No arquivo development.rb, altere ou adicione o valor de config.log_levelpara que haja uma linha como

config.log_level = :info
madth3
fonte
1
Não, isso não parece ter nenhum impacto no que está acontecendo no console. Além disso, prefiro uma solução que não exija a alteração dos arquivos do projeto.
Roger Ertesvag
Ok, a solução funciona para mim com o webrick, mas você pode estar usando outro servidor ou executando em modo de produção ou teste?
dia 3 de
3
Funciona para alterar o conteúdo dos arquivos de log. Mas a questão é sobre o console do Rails, não os arquivos de log.
Roger Ertesvag,
6

De um amigo meu:

your_query; nil
tatiCarvalho
fonte
1
Para melhorar a qualidade da sua postagem, inclua como / por que ela resolverá o problema.
Mick MacCallum
7
Isso impedirá que seu console ruby ​​despeje os resultados das expressões para o console, mas não impedirá que ActiveRecord despeje informações de sql no logger do Rails.
eremzeit
1
Para os comentaristas anteriores: isso responde à pergunta, e é a única resposta que funcionou para mim, o que mais se poderia desejar?
valk
3
Não acho que isso responda à pergunta de forma alguma. como disse @eremzeit, isso não impedirá que todas as consultas sql sejam despejadas em seu console, apenas impedirá que o valor de retorno desse comando seja impresso ...
opsidao
1
Não responde à pergunta, mas é útil para não repetir os resultados
Rutger
4

No Rails 3.2, configuração

config.logger.level = Logger::INFO

funcionou bem para mim por desligar a saída SQL.

Brokenbeatnik
fonte
Isso ainda registra a saída do SQL no arquivo de log?
Joshua Pinter
-2

Vejo que você já obteve a resposta necessária, embora eu gostaria de aconselhar a gema dos 'ativos silenciosos', a maioria dos dados de log serão compilados e inclusos de ativos, esta gema removerá isso e ainda produzirá as consultas e o comportamento dos dados.

Diverta-se

dennis
fonte
1
A questão é sobre a saída para o console, não os arquivos de log
Roger Ertesvag