কম্পিউটার

রুবিতে ব্যতিক্রমগুলিতে প্রসঙ্গ ডেটা কীভাবে যুক্ত করবেন

কখনও কখনও স্ট্যান্ডার্ড ব্যাকট্রেস / ত্রুটি বার্তা কম্বো যথেষ্ট নয়। কখনও কখনও আপনার একটি ত্রুটির কারণ সনাক্ত করতে অতিরিক্ত ডেটা প্রয়োজন৷ সৌভাগ্যবশত, রুবিতে এটি করা খুবই সহজ৷

ত্রুটির বার্তা কাস্টমাইজ করা হচ্ছে

আপনার ত্রুটির প্রাসঙ্গিক তথ্য যোগ করার সবচেয়ে সহজ উপায় হল এটি ব্যতিক্রমের বার্তায় যোগ করা। নীচের উদাহরণে আমি একটি ব্যতিক্রম ধরছি এবং এটি একটি নতুন বার্তার সাথে পুনরায় উত্থাপন করছি:

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-এর প্রসঙ্গ বৈশিষ্ট্য আপনাকে আপনার ব্যতিক্রমগুলির সাথে আপনার প্রয়োজনীয় তথ্যগুলিকে খুব বেশি কোড ছাড়াই সংযুক্ত করতে দেয়৷


  1. আউটলুক ডেটা ফাইল থেকে কীভাবে পাসওয়ার্ড যুক্ত বা সরাতে হয়

  2. উইন্ডোজ 11 এ কীভাবে রিস্টোর পয়েন্ট কনটেক্সট মেনু তৈরি করবেন

  3. উইন্ডোজ 11 এ কীভাবে একটি স্বচ্ছ প্রসঙ্গ মেনু যুক্ত করবেন

  4. Windows 11 এ কিভাবে একটি স্বচ্ছ প্রসঙ্গ মেনু যোগ করবেন