2008-09-13 12 views
6

निष्पादन के दौरान नियंत्रक चर के मूल्य को निर्धारित करने का सबसे अच्छा तरीका क्या है?रूबी पर रूबी में निष्पादन के दौरान नियंत्रक चर के मान को कैसे निर्धारित किया जाए?

उदाहरण के लिए, क्या मैं कोड में एक ब्रेक डाल सकता हूं, और चर के मान को स्क्रीन (या लॉग) में आउटपुट का कारण बन सकता है?

उत्तर

11

हां। एक स्ट्रिंग के रूप में मूल्य को बढ़ाने का सबसे आसान तरीका है। इस तरह: raise @foo.to_s

या, आप डीबगर (gem install ruby-debug) स्थापित कर सकते हैं, और फिर --debugger ध्वज के साथ विकास सर्वर प्रारंभ कर सकते हैं। फिर, अपने कोड में, debugger निर्देश पर कॉल करें।

डीबगर प्रॉम्प्ट के अंदर, आपके पास एक चर के मान को मुद्रित करने के लिए p सहित कई आदेश हैं।

अद्यतन: यहां a bit more about ruby-debug है।

5

आप एक नियंत्रक उदाहरण चर @foo नाम है, तो अपने नियंत्रक में आप बस की तरह कुछ कर सकते हैं हैं:

logger.debug "@foo is: #{@foo}" 

साथ ही आप कर सकते हैं उत्पादन मूल्य आपके विचार टेम्पलेट में उपयोग करते हुए,:

<%= debug @foo %> 
5

मैं बहुत की तरह विधि का निरीक्षण उपयोग करने को प्राथमिकता:

raise @foo.inspect 

इसमें विशेषता मानों की तरह to_s की तुलना में अधिक जानकारी है। जोर्डी Bunster, जॉन Topley, और Jaryl से

3

सारांश:

मैं त्वरित और गंदा तरीका:

raise @foo.inspect 
अपने नियंत्रक में

। या

<% raise @foo.inspect %> 

आपके विचार में।

II। आपके लिए उचित लॉगिंग development.log:

logger.debug "@foo == #{@foo.inspect}" 

III। Full-fledged debugging:

डीबगर (gem install ruby-debug) स्थापित करें, और उसके बाद --debugger ध्वज के साथ विकास सर्वर प्रारंभ करें। फिर, अपने कोड में, debugger निर्देश पर कॉल करें।

डीबगर प्रॉम्प्ट के अंदर, आपके पास एक चर के मान को मुद्रित करने के लिए p सहित कई आदेश हैं।

0

अपवाद उठाना सबसे तेज़ तरीका है यदि आपको केवल एक मूल्य देखने की आवश्यकता है, लेकिन यह सीखने का समय है कि डीबगर का सही तरीके से उपयोग कैसे करें। यह दुर्लभ है कि आपको केवल एक चर के मान को देखने की आवश्यकता होगी, आप शायद अपने कोड में एक बग खोजने की कोशिश कर रहे हैं, और यही एक डीबगर है।

विकास लॉग में जानकारी भेजना अब तक दो अन्य विकल्पों में से किसी एक से धीमा है यदि आप डीबगर (जो लॉग फ़ाइलों के माध्यम से पढ़ना चाहते हैं) का उपयोग करना सीखते हैं। उत्पादन के लिए लॉगर का उपयोग करें, आप यह देखना चाहते हैं कि कोई मूल्य कब होता है जब कोई आपको कॉल करता है और कहता है कि सबकुछ टूट गया है।

0

ठीक है, मैं आमतौर पर मानक त्रुटि उत्पादन

$ stderr.print ("जो कुछ भी")

इसका सरल पसंद करते हैं और काम करता है।

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