Modellerim için bazı RSpec testlerim var ve Rails sunucu modunda gördüğüm gibi SQL ActiveRecord günlük kaydını açmak istiyorum. Bu nasıl yapılır?
Testlerime şununla başlıyorum
RAILS_ENV=test bundle exec rspec my/test_spec.rb
Teşekkürler
Yanıtlar:
Varsayılan olarak, tüm db sorgularınız zaten test modunda kaydedilecektir. İçeride olacaklar log/test.log
.
tail -f log/test.log
ActiveSupport::Notifications.subscribe do |*args| puts *args end
ActiveRecord logger'ı testinizde bir yerde standart çıkışa ayarlamayı deneyebilirsiniz. Rspec kullanıyorsanız, belki özellik yardımcısında?
ActiveRecord::Base.logger = Logger.new(STDOUT)
active_record
dahil edilen bir cevheri test ediyorsanız çok daha yararlıdır , çünkü bunlar varsayılan olarak SQL'i kaydetmez.
STDOUT
yeniden eşlenmiştir ve $stdout
bunun yerine kullanmanız gerekir .
Sizin durumunuzda diğer yanıtlar işe yaramazsa, lütfen test ortamınızın 'günlük düzeyini' kontrol edin.
varsayılanı, Rails tarafından oluşturulan SQL'i çıkaracak olan 'hata ayıklama'dır. "bilgi" olarak ayarlanmışsa, SQL eksik olacaktır.
İçinde test.rb
:
Rails.application.configure do
...
config.logger = ActiveSupport::Logger.new(STDOUT)
end