2011-11-01 25 views
20

Trong khi tính năng chi tiết của các cuộc gọi SQL/ActiveRecord hữu ích hầu hết thời gian, tôi muốn tắt nó trong trường hợp tôi có một số vòng lặp đang diễn ra.Tắt sql/ActiveRecord chi tiết cho Rails 3.1.1

Có cách nào để tắt tính năng này không?

irb(main):055:0> City.first 
    ←[1m←[35mCity Load (1.0ms)←[0m SELECT `cities`.* FROM `cities` LIMIT 1 
=> #<City id: 1, name: "bla bla", state_id: 1, zip: nil, country_id: nil, 
created_at: "2011-03-27 14:11:28", updated_at: "2011-08-16 11:14:36", guid: "5PK 
fvvz2Gsi"> 
+3

Đúng, bạn có thể tắt: http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging –

+0

Cảm ơn bạn, @JohnBachir =) – Abdo

Trả lời

25

Trong giao diện điều khiển:
Disable:

old_logger = ActiveRecord::Base.logger 
ActiveRecord::Base.logger = nil 

Enable:

ActiveRecord::Base.logger = old_logger 
+1

Có cách nào khác để thực hiện việc này không ? Điều này gây ra lỗi trong mã sử dụng logger.debug. Tôi muốn tắt những cái tôi không viết bằng tay. – Abdo

+41

Một cách khác để làm điều đó, như được đề cập trong http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging, là 'ActiveRecord :: Base.logger.level = 1' để biến đăng xuất (đặt mức độ đăng nhập thành thông tin) và 'ActiveRecord :: Base.logger.level = 0' để bật lại (đặt mức nhật ký thành gỡ lỗi). –

+0

@HenrikN có phải là vĩnh viễn hay chỉ cho phiên này? – FloatingRock

4

Trong Rails 4 Tôi đã làm phiền bởi những câu ActiveRecord khai thác gỗ SQL ở giữa thông số kỹ thuật của tôi vì vậy Tôi vô hiệu hóa tính năng này bằng cách thêm số này vào config/environments/test.rb:

Rails.application.configure do 
    # ... 
    config.log_level = :info 
end 
Các vấn đề liên quan