Como faço para ativar o log de depuração SQL para ActiveRecord em testes RSpec?

92

Eu tenho alguns testes RSpec para meus modelos e gostaria de ativar o log do SQL ActiveRecord como vejo no modo de servidor Rails. Como fazer isso?

Eu começo meus testes com

RAILS_ENV=test bundle exec rspec my/test_spec.rb

obrigado

lzap
fonte

Respostas:

55

Por padrão, todas as suas consultas de banco de dados já serão registradas no modo de teste. Eles estarão dentro log/test.log.

dedos ociosos
fonte
Ah, eu queria ver no console. Mas isso é bastante justo.
lzap
21
Você pode assisti-lo em um console usandotail -f log/test.log
idlefingers
341

Você pode tentar configurar o logger ActiveRecord para stdout em seu teste em algum lugar. Se você estiver usando rspec, talvez no auxiliar de especificações?

ActiveRecord::Base.logger = Logger.new(STDOUT)
George
fonte
3
Muito mais útil se você estiver testando uma gema com apenas active_recordincluído, pois eles não registram o SQL por padrão.
Brendon Muir
Se você estiver usando IRuby (Jupyter para Ruby), STDOUTfoi remapeado e você deve usar em seu $stdoutlugar.
Ulysse BN
12

conjunto

config.log_level = :info 

em ambiente de teste

Nicolai
fonte
4
ou defina-o como config.log_level =: debug para obter a saída máxima, incluindo cada instrução SQL executada
Zack Xu
9

se outras respostas não funcionarem no seu caso, verifique o 'nível de registro' do seu ambiente de teste.

seu padrão é 'debug', que irá gerar o SQL gerado pelo Rails. se foi definido como "info", o SQL estará ausente.

Siwei Shen 申思维
fonte
1

Em seu test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Pere Joan Martorell
fonte