Bagaimana Anda bisa menyembunyikan output database di Rails console?

103

Dalam versi Rails yang lebih baru, saya menduga dari 3 ke atas, kueri database adalah keluaran ke konsol. Ini berguna di sebagian besar waktu, tetapi bagaimana Anda bisa menyembunyikannya saat Anda tidak ingin melihatnya?

Roger Ertesvag
sumber

Jawaban:

177

Cara yang lebih baik untuk melakukan ini adalah dengan mengetik ini di konsol:

ActiveRecord::Base.logger.level = 1 

karena mencegah masalah mencoba menggunakan pointer ke logger yang diatur ke nihil (sumber: Nonaktifkan Rails SQL logging di konsol )

Untuk menyalakannya kembali

ActiveRecord::Base.logger.level = 0
Aaron B. Russell
sumber
31
Terima kasih. Dan untuk menyalakannya kembali ActiveRecord::Base.logger.level = 0,.
thebenediktus
Ada ide bagaimana melakukan ini dengan Mongoid?
Jesse Farmer
29
ActiveRecord::Base.logger = nil

dari sini

samvermette
sumber
6
Hal ini dapat menyebabkan NoMethodErrors dengan ActiveRecord mengharapkan ActiveRecord::Base.loggeruntuk menjadi objek daripada nil.
Aaron B. Russell
9

Jawaban singkatnya ... Pada file development.rb ubah atau tambahkan nilai config.log_levelsehingga ada garis seperti

config.log_level = :info
madth3
sumber
1
Tidak, ini sepertinya tidak berdampak pada apa yang terjadi di konsol. Selain itu, saya lebih memilih solusi yang tidak mengharuskan saya mengubah file proyek.
Roger Ertesvag
Oke, solusinya berfungsi untuk saya dengan webrick tetapi Anda mungkin menggunakan server lain atau berjalan dalam mode produksi atau pengujian?
madth3
3
Ini berfungsi untuk mengubah konten file log. Tapi pertanyaannya adalah tentang konsol rel, bukan file log.
Roger Ertesvag
6

Dari teman saya:

your_query; nil
tatiCarvalho
sumber
1
Untuk meningkatkan kualitas posting Anda, harap sertakan bagaimana / mengapa posting Anda akan menyelesaikan masalah.
Mick MacCallum
7
Ini akan menghentikan konsol ruby ​​Anda dari membuang hasil ekspresi ke konsol, tetapi itu tidak akan menghentikan ActiveRecord dari membuang informasi sql ke logger rel.
eremzeit
1
Untuk komentator sebelumnya: ini menjawab pertanyaan, dan ini satu-satunya jawaban yang berhasil bagi saya, apa lagi yang bisa diharapkan?
valk
3
Saya tidak berpikir ini menjawab pertanyaan sama sekali. seperti yang dikatakan @eremzeit, ini tidak akan menghentikan semua kueri sql dari dibuang ke konsol Anda, itu hanya akan menghentikan nilai yang dikembalikan dari perintah itu agar tidak dicetak ...
opsidao
1
Itu tidak menjawab pertanyaan tetapi berguna untuk tidak mengulangi hasil
Rutger
4

Di Rails 3.2, pengaturan

config.logger.level = Logger::INFO

bekerja dengan baik untuk saya karena mematikan output SQL.

brokenbeatnik
sumber
Apakah ini masih mencatat output SQL ke file log?
Joshua Pinter
-2

Saya melihat Anda sudah mendapatkan jawaban yang Anda butuhkan meskipun saya ingin menyarankan permata 'aset tenang' kepada Anda, sebagian besar data log akan menjadi kompilasi dan penyertaan aset, permata ini akan menghapusnya dan masih menampilkan kueri dan perilaku data.

Selamat bersenang-senang

dennis
sumber
1
Pertanyaannya adalah tentang keluaran ke konsol, bukan file log
Roger Ertesvag