RSpec परीक्षणों में ActiveRecord के लिए SQL डिबग लॉगिंग को कैसे चालू करूँ?


92

मेरे पास अपने मॉडलों के लिए कुछ RSpec परीक्षण हैं और मैं SQL ActiveRecord लॉगिंग चालू करना चाहूंगा जैसे मैं रेल सर्वर मोड में देखता हूं। उसको कैसे करे?

मैं अपने परीक्षण शुरू करता हूं

RAILS_ENV=test bundle exec rspec my/test_spec.rb

धन्यवाद

जवाबों:


55

डिफ़ॉल्ट रूप से, आपके सभी db प्रश्नों को पहले ही परीक्षण मोड में लॉग इन किया जाएगा। वे अंदर होंगे log/test.log


आह मैं इसे कंसोल पर देखने के लिए था। लेकिन यह काफी उचित है।
lzap

21
आप इसे एक कंसोल में देख सकते हैंtail -f log/test.log
idlefingers

341

आप कहीं न कहीं अपने टेस्ट में आगे बढ़ने के लिए ActiveRecord लकड़हारा सेट करने का प्रयास कर सकते हैं। यदि आप rspec का उपयोग कर रहे हैं, तो शायद कल्पना सहायक में?

ActiveRecord::Base.logger = Logger.new(STDOUT)

3
यदि आप केवल रत्न के साथ परीक्षण कर रहे हैं तो ये अधिक उपयोगी हैं active_recordक्योंकि ये डिफ़ॉल्ट रूप से SQL को लॉग नहीं करते हैं।
ब्रेंडन मुईर

यदि आप IRuby (रूबी के लिए जुपिटर) का उपयोग कर रहे हैं, तो STDOUTउसे हटा दिया गया है, और आपको $stdoutइसके बजाय उपयोग करना चाहिए ।
उलेसे बीएन

12

सेट

config.log_level = :info 

परीक्षा के माहौल में


4
या इसे config.log_level पर सेट करें:: अधिकतम आउटपुट प्राप्त करने के लिए डिबग करें, जिसमें प्रत्येक SQL स्टेटमेंट निष्पादित किया गया है
Zack Xu

9

यदि अन्य उत्तर आपके मामले में काम नहीं करते हैं, तो कृपया अपने परीक्षण वातावरण के 'लॉग स्तर' की जाँच करें।

इसका डिफ़ॉल्ट 'डीबग' है, जो रेल द्वारा उत्पन्न SQL को आउटपुट करेगा। यदि यह "जानकारी" पर सेट किया गया था, तो SQL गायब हो जाएगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.