Làm cách nào để bật tính năng ghi nhật ký gỡ lỗi SQL cho ActiveRecord trong kiểm tra RSpec?


92

Tôi có một số kiểm tra RSpec cho các mô hình của mình và tôi muốn bật ghi nhật ký SQL ActiveRecord giống như tôi thấy trong chế độ máy chủ Rails. Làm thế nào để làm điều đó?

Tôi bắt đầu các bài kiểm tra của mình với

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Cảm ơn

Câu trả lời:


55

Theo mặc định, tất cả các truy vấn db của bạn sẽ được ghi lại ở chế độ thử nghiệm. Họ sẽ tham gia log/test.log.


Ah, tôi muốn xem nó trên bảng điều khiển. Nhưng điều này là đủ công bằng.
lzap

21
Bạn có thể xem nó trong một giao diện điều khiển sử dụngtail -f log/test.log
idlefingers

343

Bạn có thể thử đặt trình ghi ActiveRecord thành stdout trong thử nghiệm của mình ở đâu đó. Nếu bạn đang sử dụng rspec, có thể trong trình trợ giúp thông số kỹ thuật?

ActiveRecord::Base.logger = Logger.new(STDOUT)

3
Sẽ hữu ích hơn nhiều nếu bạn đang thử nghiệm một viên ngọc chỉ được active_recordbao gồm vì chúng không ghi nhật ký SQL theo mặc định.
Brendon Muir,

Nếu bạn đang sử dụng IRuby (Jupyter dành cho Ruby), STDOUTđã được ánh xạ lại và bạn nên sử dụng $stdoutthay thế.
Ulysse BN

12

bộ

config.log_level = :info 

trong môi trường thử nghiệm


4
hoặc thiết lập nó để config.log_level =: debug để có được sản lượng tối đa, trong đó mỗi câu lệnh SQL thực hiện
Zack Xu

9

nếu những câu trả lời khác không hoạt động trong trường hợp của bạn, vui lòng kiểm tra 'mức nhật ký' của môi trường thử nghiệm của bạn.

mặc định của nó là 'gỡ lỗi', sẽ xuất ra SQL được tạo bởi Rails. nếu nó được đặt thành "thông tin", SQL sẽ bị thiếu.


1

Trong của bạn test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.