यदि आप मेरे जैसे हैं, तो आप रेल कंसोल का बहुत उपयोग करते हैं। और अब तक मुझे लगता है कि हर कोई इस बात से सहमत है कि रेल कंसोल के लिए Pry सबसे अच्छी चीज है ... ठीक है, कभी भी।
बिल्ट-इन टू प्राइ कुछ बहुत ही शानदार विशेषताएं हैं जो साधारण पुराने IRB की तुलना में अपवादों के साथ काम करना बहुत आसान बनाती हैं।
पूरा बैकट्रेस देखें
जब Pry (या उस मामले के लिए IRB) में अपवाद होते हैं, तो आपको बैकट्रेस के संक्षिप्त संस्करण के साथ प्रस्तुत किया जाता है। यह आमतौर पर काफी अच्छा होता है, लेकिन हमेशा नहीं।
pry में आप wtf -v कमांड का उपयोग करके नवीनतम अपवाद का पूरा बैकट्रेस देख सकते हैं। यदि आप -v ध्वज को छोड़ देते हैं, तो आपको संक्षिप्त बैकट्रेस मिलता है।
नवीनतम बैकट्रेस तक पहुंचने के लिए wtf कमांड का उपयोग करें
एक्सेस अपवाद डेटा
अपवादों में अक्सर दिलचस्प डेटा जुड़ा होता है। जब आईआरबी में कोई अपवाद होता है तो आप केवल कक्षा का नाम और त्रुटि संदेश देख सकते हैं। लेकिन Pry के साथ आपके पास वास्तविक अपवाद वस्तु तक पहुंच है। इसका मतलब है कि आप जो भी डेटा चाहते हैं, उसमें पहुंच सकते हैं और निकाल सकते हैं।
सबसे हाल ही में उठाया गया अपवाद प्राप्त करने के लिए, _ex_
. का उपयोग करें चर। रूबी के अंतर्निर्मित $!
. के विपरीत चर, इसका उपयोग करने के लिए आपको बचाव ब्लॉक के अंदर होने की आवश्यकता नहीं है।
पूर्व का प्रयोग करें सबसे हाल के अपवाद तक पहुंचने के लिए स्थानीय चर
अपवादों के प्रदर्शित होने के तरीके को अनुकूलित करें
मान लीजिए कि आप हमेशा पूर्ण बैकट्रेस देखना चाहते हैं जब आप शिकार में हों? आप डिफ़ॉल्ट अपवाद हैंडलर को ओवरराइड करके ऐसा कर सकते हैं।
बस ~/.pryrc खोलें और इसे इस तरह बनाएं:
# This code was mostly taken from the default exception handler.
# You can see it here: https://github.com/pry/pry/blob/master/lib/pry.rb
Pry.config.exception_handler = proc do |output, exception, _|
if UserError === exception && SyntaxError === exception
output.puts "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
else
output.puts "#{exception.class}: #{exception.message}"
output.puts "from #{exception.backtrace}"
end
end
आप अपने सभी Pry अपवादों को Honeybagger में लॉग इन करने जैसी पागल चीजें भी कर सकते हैं। :)पी>