Veritabanı çıktısını Rails konsolunda nasıl gizleyebilirsiniz?


103

Rails'in daha yeni sürümünde, tahminimce 3'ten itibaren veritabanı sorguları konsola çıktı. Bu çoğu zaman kullanışlıdır, ancak görmek istemediğinizde onu nasıl gizleyebilirsiniz?

Yanıtlar:


177

Bunu yapmanın daha iyi bir yolu, bunu konsola yazmaktır:

ActiveRecord::Base.logger.level = 1 

sıfır olarak ayarlanmış bir kaydediciye işaretçi kullanmaya çalışırken sorunları önlediği için (kaynak: Konsolda Rails SQL günlüğünü devre dışı bırak )

Tekrar açmak için

ActiveRecord::Base.logger.level = 0

31
Teşekkürler. Ve tekrar açmak için ActiveRecord::Base.logger.level = 0.
thebenedict

Bunu Mongoid ile nasıl yapacağına dair bir fikrin var mı?
Jesse Çiftçi

29
ActiveRecord::Base.logger = nil

dan burada


6
Bu, NoMethodErrorActiveRecord'un ActiveRecord::Base.loggerbir nesne yerine bir nesne olmasını beklemesine neden olabilir nil.
Aaron B. Russell

9

Kısa cevap ... Geliştirme.rb dosyasında, config.log_levelgibi bir satır olacak şekilde değiştirin veya değerini ekleyin

config.log_level = :info

1
Hayır, bunun konsolda olup bitenlere herhangi bir etkisi yok gibi görünüyor. Ayrıca proje dosyalarını değiştirmemi gerektirmeyen bir çözümü tercih ederim.
Roger Ertesvag

Tamam, çözüm webrick ile benim için çalışıyor ancak başka bir sunucu kullanıyor veya üretim veya test modlarında çalışıyor olabilirsiniz?
madth3

3
Günlük dosyalarının içeriğini değiştirmek için çalışır. Ancak soru, günlük dosyalarıyla değil, ray konsoluyla ilgilidir.
Roger Ertesvag

6

Bir arkadaşımdan:

your_query; nil

1
Gönderinizin kalitesini artırmak için lütfen gönderinizin sorunu nasıl / neden çözeceğini belirtin.
Mick MacCallum

7
Bu, Ruby konsolunuzun ifadelerin sonuçlarını konsola atmasını durduracak, ancak ActiveRecord'un sql bilgilerini ray kaydediciye atmasını engellemeyecektir.
eremzeit

1
Önceki yorumculara: Bu, soruyu yanıtlıyor ve benim için işe yarayan tek cevap bu, daha ne ister ki?
valk

3
Bunun soruyu yanıtladığını sanmıyorum. @eremzeit'in dediği gibi, bu, tüm sql sorgularının konsolunuza atılmasını durdurmaz, yalnızca bu komuttan gelen dönüş değerinin yazdırılmasını
durdurur

1
Soruyu cevaplamıyor, ancak sonuçları tekrar etmemek için kullanışlıdır
Rutger

4

Rails 3.2'de, ayarlama

config.logger.level = Logger::INFO

SQL çıktısını kapatmak için benim için iyi çalıştı.


Bu yine de SQL çıktısını günlük dosyasına kaydediyor mu?
Joshua Pinter

-2

Size 'sessiz varlıklar' cevherini tavsiye etmek istememe rağmen, ihtiyaç duyduğunuz cevabı zaten aldığınızı görüyorum, günlük verilerinin çoğu varlık derleme ve dahil etme olacak, bu mücevher bunu kaldıracak ve yine de sorguları ve veri davranışını çıkaracaktır.

İyi eğlenceler


1
Soru, günlük dosyalarına değil konsola çıktı
vermekle ilgili
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.