আমার মতো থাকলে, আপনি রেলস কনসোল খুব বেশি ব্যবহার করেন। এবং এখন সবাই মনে করেন প্রাই (Pry) রেলস কনসোলে হয়েছে সবচেয়ে ভালো জিনিস...ওয়েল, যেনে যেন।
প্রাইর বিল্ট-ইন কিছু খুব কুল ফিচার আছে যা এক্সেপশন নিয়ে কাজ করা সাদা পুরানো আইআরবির চেয়ে অনেক সহজ করে দিয়েছে।
পূর্ণ ব্যাকট্রেস দেখুন
যখন প্রাইতে (বা আইআরবিতে) এক্সেপশন ঘটে, আপনাকে সংক্ষিপ্ত একটি ব্যাকট্রেস দেখানো হয়। এটা সাধারণত যথেষ্ট, কিন্তু সবসময় নয়।
প্রাইতে আপনি সাম্প্রতিক এক্সেপশনের পূর্ণ ব্যাকট্রেস wtf -v কমান্ড দিয়ে দেখতে পারেন। আপনি যদি -v ফ্ল্যাগ ছাড়া দেন, সংক্ষিপ্ত ব্যাকট্রেস পাবেন।
সাম্প্রতিক ব্যাকট্রেস অ্যাক্সেস করতে wtf কমান্ড ব্যবহার করুন।
এক্সেপশন ডেটা অ্যাক্সেস করুন
এক্সেপশনগুলোর সাথে প্রায়শই আকর্ষণীয় ডেটা থাকে। আইআরবিতে এক্সেপশন হলে আপনি শুধু ক্লাসের নাম এবং এরর মেসেজ দেখতে পান। কিন্তু প্রাইতে আপনার এক্সেপশন অবজেক্টটি সেটেই অ্যাক্সেস থাকে। অর্থাৎ আপনি যা দরকার সেটা বের করে আনতে পারেন।
সাম্প্রতিক উত্থাপিত এক্সেপশন পেতে, _ex_ ভেরিয়েবল ব্যবহার করুন। রুবির বিল্ট-ইন $! ভেরিয়েবলের বিপরীতে, এতে রেসকিউ ব্লকের ভিতরে থাকতে হয় না।
সাম্প্রতিক এক্সেপশন অ্যাক্সেস করতে _ex_ লোকাল ভেরিয়েবল ব্যবহার করুন।
এক্সেপশন কীভাবে দেখানো হয় সেটা কাস্টোমাইজ করুন
ধরুন, আপনি প্রাইতে থাকাকালিন সবসময় পূর্ণ ব্যাকট্রেস দেখতে চান। আপনি ডিফল্ট এক্সেপশন হ্যান্ডলার ওভাররাইড করে সেটা করতে পারেন।
শুধু ~/.pryrc খুলুন এবং এটাকে নিচের মত করুন:
# এই কোডটি অধিকাংশ ডিফল্ট এক্সেপশন হ্যান্ডলার থেকে নেওয়া।
# আপনি এটা এখানে দেখতে পারেন: 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
আপনি পাগলপনাও করতে পারেন যেন আপনার সব প্রাই এক্সেপশন হানিব্যাজারে লগ হয়। :)