Apakah ada cara untuk menonaktifkan pendataan query SQL ketika saya menjalankan perintah di konsol? Idealnya, akan lebih bagus jika saya bisa menonaktifkannya dan mengaktifkannya kembali dengan perintah di konsol.
Saya mencoba men-debug sesuatu dan menggunakan "put" untuk mencetak beberapa data yang relevan. Namun, hasil kueri sql membuatnya sulit dibaca.
Sunting: Saya menemukan solusi lain, karena mengatur logger ke nil terkadang menimbulkan kesalahan, jika sesuatu selain kode saya mencoba memanggil logger.warn
Alih-alih mengatur logger untuk nil
Anda dapat mengatur tingkat logger 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
gylaz
sumber
sumber
since setting the logger to nil sometimes raised an error
ya .. Saya dapat yang ini ketika mencoba menjalankanrake db:migrate
stackoverflow.com/questions/1719212/…Jawaban:
Untuk mematikannya:
Untuk mengaktifkannya kembali:
sumber
.irbrc
, yang pada dasarnya.bashrc
untuk konsol Rails. sebenarnya Anda dapat melakukan apa saja.irbrc
jika Anda ingin, misalnya pewarnaan sintaks, histori, edit kode in vi dan kemudian jalankan di konsol Rails, dll. periksa permata sayautility_belt
jika Anda menggunakan Ruby 1.8 atau port Ruby 1.9 disebutflyrb
.irbrc
seperti.bashrc
tetapi sebenarnya untuk perintah interaktif ruby Anda . Itu bukan hal rel. Saya membayangkan Anda mungkin akan mendapatkan kesalahan jika Anda mencoba referensi kelas rel ketika Anda menjalankan irb di luar lingkungan rel.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
adalah jawaban yang jauh lebih baik karena tidak akan menimbulkan pengecualian jika Anda menggunakan .info dan lainnya.Berikut variasi yang saya anggap lebih bersih, yang masih memungkinkan potensi logging lainnya dari AR. Di config / environment / development.rb:
sumber
Ini mungkin bukan solusi yang cocok untuk konsol, tetapi Rails memiliki metode untuk masalah ini: Logger # silence
sumber
Untuk Rails 4 Anda dapat meletakkan yang berikut ini di file lingkungan:
sumber
Jika seseorang ingin benar - benar melumpuhkan logging pernyataan SQL (tanpa mengubah level logging, dan sambil menjaga logging dari model AR mereka):
Baris yang menulis ke log (di Rails 3.2.16, toh) adalah panggilan
debug
masuklib/active_record/log_subscriber.rb:50
.Metode debug didefinisikan oleh
ActiveSupport::LogSubscriber
.Jadi kita dapat menghapus log dengan menimpanya seperti:
sumber
Rails.logger.debug
pernyataan.Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Perlu diingat bahwa monkeypatching disukai oleh beberapa orang. Mungkin sebaiknya jangan periksa ini ke kode produksi Anda.Saya menggunakan ini:
config.log_level = :info
edit-inconfig/environments/performance.rb
Bekerja dengan baik untuk saya, menolak output SQL, dan hanya menampilkan informasi rendering dan penting.
sumber
Di Rails 3.2 saya melakukan sesuatu seperti ini di config / environment / development.rb:
sumber
Sama seperti FYI, di Rails 2 Anda bisa melakukannya
Jelas kurung kurawal dapat diganti dengan
do end
balok jika Anda mau.sumber