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

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.


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)

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


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.


1

Em seu test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.