2011-08-13 16 views
8

क्या रेल ऐप में सभी विधि कॉल लॉग करने का कोई आसान तरीका है?रेल ऐप में सभी विधि कॉल लॉगिंग

इस के लिए मेरा मुख्य उपयोग होगा परीक्षण में (और डिबगिंग परीक्षण में)। मैं एक स्टैकट्रैक प्रदान करने से अधिक इतिहास चाहता हूं (उदाहरण के लिए, '-b' विकल्प के साथ rspec चलाते समय)।

उत्तर

18

यह करना आसान है। बस अपनी स्क्रिप्ट/सर्वर में कोड के 5 पंक्तियां जोड़ें:

#!/usr/bin/env ruby 
set_trace_func proc { 
    |event, file, line, id, binding, classname| 
    if event == "call" or event == "return" 
    printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname 
    end 
} 

require File.expand_path('../../config/boot', __FILE__) 
require 'commands/server' 

यह http://phrogz.net/ProgrammingRuby/ospace.html#tracingyourprogramsexecution

आपका आवेदन में वर्णित काफी धीमी गति से हो जाएगा और आप अधिक उत्पादन की तुलना में आप चाहते हैं मिल सकता है। अनचाहे सामान छापने से बचने के लिए आप आसानी से फ़ाइल/कक्षा/फ़ंक्शन नामों पर अधिक स्थितियां जोड़ सकते हैं।

-3

सबसे पहले स्टैकट्रेस हर विधि कॉल उस समय एक त्रुटि हो गई पर ढेर पर था, जो दूसरे इतिहास आप इस के अलावा चाहते सकता है?

दूसरे, आपके सवाल का जवाब देने के लिए, कोई वहाँ सभी विधि कॉल लॉग ऑन करने के लिए कोई आसान तरीका है। आप अपने लॉग स्तर को डीबग करने के लिए सभी तरह से कर सकते हैं जो आपको लॉग में अधिक सामान देना चाहिए, लेकिन यह केवल वही चीजें होगी जिन्हें किसी ने वास्तव में लॉग इन करने के लिए चुना है, विधि कॉल से संबंधित नहीं है।

यह शायद इस तरह से है कि पैच माणिक करने के लिए मुश्किल नहीं होगा कि हर विधि कॉल करने से पहले और विधि निष्पादन के बाद कुछ लॉग बयान प्रिंट होगा, लेकिन यह एक बार फिर से क्या एक स्टैक ट्रेस आप देना होगा के समान होगा वैसे भी और संभवतः कम आप स्टैक ट्रेस की तुलना में अधिक जानकारी चाहते हैं, क्योंकि आप लाइन नंबर आदि

नहीं मिलेगा, लॉगिंग तरह से ज्यादातर लोगों को यह क्या करना होगा है।

+0

मुझे निश्चित रूप से क्या हुआ * इतिहास * स्टैकट्रैक पर क्या है। व्यावहारिक रूप से, मैं रेलवे ऐप में कैनकन करने के लिए घोषणात्मक_आधिकरण से स्विच कर रहा हूं, और अचानक मेरे आरएसपीईसी परीक्षणों में मेरे 'चाहिए_receive' का एक गुच्छा काम नहीं करता है, हालांकि लॉग में डीबी-कॉल ठीक दिखते हैं। मुझे लगता है कि अगर मुझे पता है कि कॉल क्या बदले हैं, तो मैं अपने परीक्षण अपडेट कर सकता हूं और अपने मजेदार तरीके से रह सकता हूं। – dafmetal

3

Perftools आप दे सकता है आप के लिए क्या देख रहे हैं। यह पूरी प्रक्रिया का विश्लेषण करता है और आपको एक ग्राफिकल दृश्य दे सकता है जो कुछ like this दिखता है। Rack perftools profiler एक रूबीजम है जो perftools का उपयोग करता है और रेल अनुप्रयोग के साथ एकीकृत करना आसान बनाता है, इसलिए यदि आप इसे आजमा देना चाहते हैं तो मैं इसके साथ जाने की अनुशंसा करता हूं।

संबंधित मुद्दे