কখনও কখনও স্ট্যান্ডার্ড ব্যাকট্রেস / ত্রুটি বার্তা কম্বো যথেষ্ট নয়। কখনও কখনও আপনার একটি ত্রুটির কারণ সনাক্ত করতে অতিরিক্ত ডেটা প্রয়োজন৷ সৌভাগ্যবশত, রুবিতে এটি করা খুবই সহজ৷
৷ত্রুটির বার্তা কাস্টমাইজ করা হচ্ছে
আপনার ত্রুটির প্রাসঙ্গিক তথ্য যোগ করার সবচেয়ে সহজ উপায় হল এটি ব্যতিক্রমের বার্তায় যোগ করা। নীচের উদাহরণে আমি একটি ব্যতিক্রম ধরছি এবং এটি একটি নতুন বার্তার সাথে পুনরায় উত্থাপন করছি:
begin
raise "foo"
rescue => e
raise e.class, "bar"
end
# RuntimeError: bar
আপনি যখন একটি টেমপ্লেট রেন্ডার করছেন তখন এই পদ্ধতির জন্য একটি ভাল ব্যবহারের ক্ষেত্রে হতে পারে। টেমপ্লেটের ভিতরে ঘটে যাওয়া কোনো ব্যতিক্রম টেমপ্লেটের ফাইলের নাম জানে না। কিন্তু ডিবাগ করার সময় আপনার জানার জন্য এটি বেশ গুরুত্বপূর্ণ তথ্য৷
আপনি কীভাবে টেমপ্লেট ত্রুটিগুলি উদ্ধার করতে পারেন এবং বার্তার সাথে ফাইলের নামটি প্রিপেন্ড করতে পারেন তার একটি উদাহরণ এখানে রয়েছে৷
filename = "mytemplate.erb"
template = File.read(filename) # Contains "<% 1/0 %>"
e = ERB.new(template)
begin
e.result
rescue => e
raise e.class, [filename, e.message].join(": ")
end
# ZeroDivisionError: mytemplate.erb: divided by 0
ব্যতিক্রমটি মোড়ানো
ব্যতিক্রমগুলিতে প্রাসঙ্গিক তথ্য অন্তর্ভুক্ত করার আরেকটি বিকল্প হল একটি কাস্টম ব্যতিক্রম তৈরি করা। যেহেতু ব্যতিক্রমগুলি হল রুবি-তে অন্য সব কিছুর মতো ক্লাস, তাই আপনি আপনার হৃদয়ের ইচ্ছা অনুযায়ী অনেকগুলি attr_accessors যোগ করতে পারেন৷
এটি দেখতে কেমন হতে পারে তা এখানে:
TemplateError < StandardError
attr_reader :filename
def initialize(msg, filename)
@filename = filename
super(msg)
end
end
begin
ERB.new(template).result
rescue => e
raise TemplateError.new(e.message, filename)
end
হনিব্যাজারের প্রসঙ্গ বৈশিষ্ট্য ব্যবহার করা
ঠিক আছে ঠিক আছে. আমাকে এটি রাখতে হয়েছিল, যেহেতু হানিব্যাজারের কাছে আপনার ব্যতিক্রমগুলিতে প্রাসঙ্গিক তথ্য যুক্ত করার একটি চমত্কার উপায় রয়েছে। ব্যতিক্রম বস্তুটি পরিবর্তন করার পরিবর্তে, আপনি আপনার অ্যাপ্লিকেশনের যেকোনো স্থান থেকে Honeybadger.context পদ্ধতি ব্যবহার করুন।
class ApplicationController
....
def find_current_user
user = ...
Honeybadger.context(user_id: user.id, user_email: user.email, user.scope: "user")
end
end
একটি ব্যতিক্রম ঘটলে, প্রসঙ্গ ডেটা তার সাথে রিপোর্ট করা হয়। তারপরে আপনি আমাদের ওয়েব বা মোবাইল অ্যাপে অন্যান্য ব্যতিক্রম ডেটা সহ ডেটা দেখতে পারেন৷
৷Honeybadger-এর প্রসঙ্গ বৈশিষ্ট্য আপনাকে আপনার ব্যতিক্রমগুলির সাথে আপনার প্রয়োজনীয় তথ্যগুলিকে খুব বেশি কোড ছাড়াই সংযুক্ত করতে দেয়৷