Existe uma maneira de desabilitar o log de consultas SQL quando estou executando comandos no console? Idealmente, seria ótimo se eu pudesse desativá-lo e reativá-lo com um comando no console.
Estou tentando depurar alguma coisa e usando "puts" para imprimir alguns dados relevantes. No entanto, a saída da consulta sql está dificultando a leitura.
Edit: Encontrei outra solução, já que a configuração do logger como nulo às vezes gerava um erro, se algo diferente do meu código tentasse chamar logger.warn
Em vez de definir o logger como nil
você pode definir o nível do logger para 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
gylaz
fonte
fonte
since setting the logger to nil sometimes raised an error
yap .. Eu peguei este ao tentar executarrake db:migrate
stackoverflow.com/questions/1719212/…Respostas:
Para desativá-lo:
Para ligá-lo novamente:
fonte
.irbrc
, que é basicamente.bashrc
para o console do Rails. de fato, você pode fazer qualquer coisa,.irbrc
se quiser, por exemplo, coloração de sintaxe, histórico, editar código no vi e executá-lo no console do Rails, etc. verifique minha gemautility_belt
se estiver no Ruby 1.8 ou na porta Ruby 1.9 chamadoflyrb
.irbrc
é como,.bashrc
mas na verdade, para a sua linha de comando interativa ruby . Não é uma coisa dos trilhos. Eu imagino que você provavelmente obteria erros se tentasse fazer referência a classes de trilhos quando executava o irb fora de um ambiente de trilhos.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
é uma resposta muito melhor, pois não gera exceções se você usar .info e outros.Aqui está uma variação que considero um pouco mais limpa, que ainda permite outros registros em potencial do AR. Em config / environment / development.rb:
fonte
Pode não ser uma solução adequada para o console, mas o Rails tem um método para este problema: Logger # silence
fonte
Para o Rails 4, você pode colocar o seguinte em um arquivo de ambiente:
fonte
Caso alguém queira realmente eliminar o log de instruções SQL (sem alterar o nível de log e mantendo o log de seus modelos de RA):
A linha que grava no log (no Rails 3.2.16, de qualquer maneira) é a chamada para
debug
inlib/active_record/log_subscriber.rb:50
.Esse método de depuração é definido por
ActiveSupport::LogSubscriber
.Portanto, podemos eliminar o registro substituindo-o da seguinte maneira:
fonte
Rails.logger.debug
instruções.Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Lembre-se de que o monkeypatching é desaprovado por alguns. Provavelmente não deve verificar isso no seu código de produção.Eu usei isso:
config.log_level = :info
edit-inconfig/environments/performance.rb
Trabalhando muito bem para mim, rejeitando a saída SQL e mostrando apenas renderização e informações importantes.
fonte
No Rails 3.2, estou fazendo algo parecido com isto em config / environment / development.rb:
fonte
Assim como um FYI, no Rails 2 você pode fazer
Obviamente, o aparelho pode ser substituído por um
do end
bloco, se você quiser.fonte