Ho alcuni test RSpec per i miei modelli e vorrei attivare il log di SQL ActiveRecord proprio come vedo nella modalità server Rails. Come farlo?
Inizio i miei test con
RAILS_ENV=test bundle exec rspec my/test_spec.rb
Grazie
Risposte:
Per impostazione predefinita, tutte le query del database verranno registrate già in modalità test. Saranno dentro log/test.log
.
tail -f log/test.log
Puoi provare a impostare il logger di ActiveRecord su stdout nel tuo test da qualche parte. Se stai usando rspec, forse nell'helper delle specifiche?
ActiveRecord::Base.logger = Logger.new(STDOUT)
active_record
incluso poiché questi non registrano l'SQL per impostazione predefinita.
STDOUT
è stato rimappato e dovresti usare $stdout
invece.
se altre risposte non funzionano nel tuo caso, controlla il "livello di log" del tuo ambiente di test.
il suo valore predefinito è 'debug', che restituirà l'SQL generato da Rails. se era impostato su "info", mancherà l'SQL.
Nel tuo test.rb
:
Rails.application.configure do
...
config.logger = ActiveSupport::Logger.new(STDOUT)
end