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?

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

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


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

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

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.


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


1
Pertanyaannya adalah tentang keluaran ke konsol, bukan file log
Roger Ertesvag
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.