TLDR:শুধু বুলেট পয়েন্টের জন্য, চেঞ্জলগ দেখুন।
আমি সম্প্রতি রুবিতে ব্যতিক্রম রিপোর্ট করার জন্য আমাদের রত্নটিতে সর্বশেষ বড় আপডেট পাঠিয়েছি। যদিও v2release একটি সম্পূর্ণ পুনঃলিখন যা একটি নতুন কনফিগারেশন কৌশল অন্তর্ভুক্ত করে, v3-এ রয়েছে কম ব্রেকিং পরিবর্তন কিন্তু প্রচুর বৈশিষ্ট্য এবং ব্যবহারযোগ্যতার উন্নতি রয়েছে৷ এখানে অনেক কিছু কভার করার আছে, তাই আমি সরাসরি ঢুকতে যাচ্ছি৷ উপভোগ করুন!
Plain ol' রুবি মোড
রেল জগতে এটি মোটামুটি প্রত্যাশিত যে আপনি যখন একটি রত্ন ইনস্টল করবেন তখন এটি স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশনের সাথে একত্রিত হবে। উদাহরণ স্বরূপ, অনেক রত্ন তাদের নিজস্ব রেলটি প্রদান করে তাদের নিজস্ব কোড চালানোর জন্য যখন রেল শুরু হয়।
হানিব্যাজার রত্নটি সম্পূর্ণরূপে সেই পদ্ধতিকে আলিঙ্গন করে, যা রেল, সিনাট্রা, সিডেকিক এবং অন্যান্য জনপ্রিয় রত্ন এবং কাঠামোর জন্য ব্যাপক ত্রুটি রিপোর্টিং সেটআপ করা সত্যিই সহজ করে তোলে। এটি আক্ষরিক অর্থেই require
'honeybadger'
এর মতই সহজ .
কিছু রুবিস্ট তাদের নিজস্ব ইন্টিগ্রেশন রোল করতে পছন্দ করে, যাইহোক। মাঙ্কিপ্যাচিং (যা রেলের মধ্যে অনেক বেশি ঘটে) তাদের রাগান্বিত করে, এবং শেষ জিনিসটি তারা চায় একটি রত্ন যাতে তাদের অ্যাপ্লিকেশনটিকে কম-সুস্পষ্ট উপায়ে পরিবর্তন করতে হয়। আমি এটি সম্পূর্ণরূপে বুঝতে পারি (আসলে, আমি নিজেই সেই মানসিকতার দিকে ঝোঁক)।
অন্যরা হয়ত আমরা যে লাইব্রেরিগুলির সাথে একত্রিত করি সেগুলির কোনওটিই ব্যবহার করছে না এবং বরং Honeybadger.notify
ব্যবহার করে নিজেরাই ত্রুটিগুলি রিপোর্ট করবে৷ , রানটাইমে অপ্রয়োজনীয় সূচনা এড়ানো।
এজন্য আমি "Plain ol' Ruby" মোড (অনুষ্ঠানিক শিরোনাম) যোগ করেছি। আপনি যদি এমন অদ্ভুত ব্যক্তিদের মধ্যে একজন হন যারা স্ক্র্যাচ থেকে কনফিগারেশন লিখতে এবং মিডলওয়্যার ইনস্টল করতে পছন্দ করেন (বা আপনি কেবল প্লেইন রুবি ব্যবহার করছেন), আপনি এখন require 'honeybadger/ruby'
প্রয়োজন হতে পারেন স্বাভাবিকের পরিবর্তে require 'honeybadger'
. এখন আপনি Honeybadger.notify
ব্যবহার করতে পারেন , Honeybadger.context
, ইত্যাদি কোনো স্বয়ংক্রিয় একীকরণ সক্রিয় করা ছাড়াই:এটি রুবি-এর জন্য ন্যূনতম, অনুমানযোগ্য ত্রুটি ট্র্যাকিং:
require 'honeybadger/ruby'
begin
# Failing code
rescue => exception
Honeybadger.notify(exception)
end
একাধিক এজেন্ট
প্লেইন ওল' রুবির কথা বললে, আপনি এখন অতিরিক্ত এজেন্ট তৈরি করতে রুবি ব্যবহার করতে পারেন, যা আপনার হানিব্যাজার প্রকল্পে ত্রুটির রিপোর্ট করে। এর মানে হল যে আপনি অবশেষে একই অ্যাপ্লিকেশনে একাধিক হানিব্যাজার প্রকল্পে ত্রুটি রিপোর্ট করতে পারেন। এটি দেখতে কেমন তা এখানে:
OtherBadger = Honeybadger::Agent.new
OtherBadger.configure do |config|
config.api_key = 'project api key'
end
begin
# Failing code
rescue => exception
OtherBadger.notify(exception)
end
Honeybadger.configure
এর রিটার্ন
প্রথমত, আপনি যদি honeybadger.yml ব্যবহার করেন বর্তমানে রত্নটি কনফিগার করতে, চিন্তা করবেন না -- কিছুই পরিবর্তন হয়নি, এবং এটি এখনও ডিফল্ট!
এটি বলেছিল, আমাদের কাছে এমন গ্রাহক রয়েছে যারা রুবি থেকে জেমপ্রোগ্রাম্যাটিকভাবে কনফিগার করার ক্ষমতা মিস করেছে। v3.0 এ আপনি উভয় জগতের সেরা পাবেন:আমরা এখনও honeybadger.yml এর মাধ্যমে সম্পূর্ণ কনফিগারেশন সমর্থন করি এবং এনভায়রনমেন্ট ভেরিয়েবল এবং আবার Honeybadger.configure
যোগ করেছে :
Honeybadger.configure do |config|
config.api_key = 'project api key'
config.exceptions.ignore += [CustomError]
end
কনফিগারেশনের জন্য অগ্রাধিকার হল YAML -> ENV -> রুবি, যার মানে পরিবেশগত পরিবর্তনগুলি honeybadger.ymlকে ওভাররাইড করবে , এবং Honeybadger.configure
পরিবেশ ভেরিয়েবল ওভাররাইড করবে।
ক্রন কাজ এবং কমান্ড লাইন প্রোগ্রামে ত্রুটির প্রতিবেদন করুন
ক্রনের দীর্ঘস্থায়ী সমস্যাগুলির মধ্যে একটি হল এর স্বয়ংক্রিয় ইমেল বৈশিষ্ট্য ত্রুটি আউটপুট বুঝতে পারে না। অবশ্যই, একটি কাজ ব্যর্থ হলে এটি আপনাকে ইমেল করবে, কিন্তু যখন আপনার সফল কাজগুলি আদর্শ আউটপুট তৈরি করতে হবে তখন এটি আপনাকে ইমেল করবে৷
আরে, আপনি কি কম পেতে Honeybadger ব্যবহার করবেন না অকার্যকর ইমেল সতর্কতা? আপনি যদি ইমেলের পরিবর্তে ক্রোন ব্যর্থতা রিপোর্ট করতে Honeybadger ব্যবহার করতে পারেন তাহলে কি ভালো হবে না? এখন আপনি পারবেন।
আমরা honeybadger exec
যোগ করেছি রিপোর্টিং ক্রন ব্যর্থতার পাশাপাশি যেকোনও পরিচালনা করতে আমাদের CLI (কমান্ড লাইন ইন্টারফেস) কে নির্দেশ করুন কমান্ড যা আপনি সাধারণত কমান্ড লাইনের মাধ্যমে চালান। তার মানে ব্যাশ স্ক্রিপ্ট, এক্সিকিউটেবল, make
কাজ, ইত্যাদি। এটি ব্যবহার করতে, শুধু honeybadger exec
যোগ করুন যেকোনো আদেশের আগে:
$ honeybadger exec my-command --my-flag
কমান্ডটি সফলভাবে কার্যকর হলে এটি কোড 0 সহ প্রস্থান করবে এবং কোন আউটপুট নেই (এমনকি স্ট্যান্ডার্ড আউট ডিফল্টরূপে অক্ষম করা হয়, তবে আপনি এটি একটি বিশেষ ফ্ল্যাগ দিয়ে সক্ষম করতে পারেন)। কমান্ডটি ব্যর্থ হলে, তবে, আপনি একটি হানিব্যাজার বিজ্ঞপ্তি পাবেন যাতে চালানো কমান্ড এবং সম্পূর্ণ আউটপুট অন্তর্ভুক্ত থাকে৷
কারণ honeybadger exec
সফল কমান্ডের জন্য ডিফল্টরূপে সমস্ত আউটপুট নীরব করে, এটি ক্রনের ইমেল বৈশিষ্ট্যের সাথে বিশেষভাবে কার্যকর। honeybadger exec
উভয়ই ব্যবহার করে এবং ক্রন ইমেল আপনি হানিব্যাজার বিজ্ঞপ্তি পাবেন যখন একটি কমান্ড ব্যর্থ হয়; যদি কোনো কারণে হানিব্যাজার বিজ্ঞপ্তিটিও ব্যর্থ হয় (উদাহরণস্বরূপ, সংযোগের সমস্যার কারণে), এটি মূল কমান্ড থেকে আউটপুট ডাম্প করবে এবং ক্রোন এখনও ব্যর্থতার বিষয়ে আপনাকে ইমেল করবে।
কমান্ড লাইন থেকে কাস্টম ত্রুটির প্রতিবেদন করুন
এই এক বেশ সহজ. অ্যাবশ স্ক্রিপ্ট (বা কোনো শেল) থেকে একটি কাস্টম হানিব্যাজার বিজ্ঞপ্তি পাঠাতে চান? honeybadger notify
ব্যবহার করুন :
$ honeybadger notify --message "This is an error from the command line"
আপনি --শ্রেণীর মত ঐচ্ছিক পতাকা ব্যবহার করতে পারেন , --কম্পোনেন্ট , --ক্রিয়া , ইত্যাদি বিজ্ঞপ্তিতে অতিরিক্ত বৈশিষ্ট্য যোগ করুন।
অন্যান্য উন্নতি
আমরা v3:
-এ আরও বেশি বৈশিষ্ট্য এবং উন্নতি যোগ করেছিHoneybadger.notify
এখন একটি ব্যতিক্রম ছাড়াও একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে, তাই আপনি করতে পারেনHoneybadger.notify("these are not the badgers you're looking for")
.- যখন একটি গিট রিপোজিটরির ভিতরে, গিট রিভিশন স্বয়ংক্রিয়ভাবে ব্যতিক্রম ছাড়া রিপোর্ট করা হয়। নতুন
:revision
দিয়ে রিভিশন যোগ করা বা ম্যানুয়ালি পরিবর্তন করা যেতে পারে কনফিগারেশন বিকল্প। - CLI এর ইউজার ইন্টারফেস এখন ভার্বোস ত্রুটি বার্তাগুলির সাথে অনেক বেশি বন্ধুত্বপূর্ণ, এবং এটি একটি স্বতন্ত্র এক্সিকিউটেবল (রেলের বাইরে) হিসাবে ব্যবহার করা যেতে পারে।
- পরীক্ষা স্যুটটি প্রায় 10 গুণ দ্রুত, যার অর্থ আমরা আরও বেশি নতুন বৈশিষ্ট্য এবং দ্রুত সংহতকরণ বিকাশ করতে পারি৷
- অনুরোধ ডেটা ফিল্টারটি এখন ডিফল্টরূপে একটি ওয়াইল্ডকার্ড ম্যাচ কৌশল ব্যবহার করে। সুতরাং আপনি যদি "পাসওয়ার্ড" ফিল্টার করেন, "পাসওয়ার্ড" এবং "পাসওয়ার্ড_কনফার্মেশন" রিকোয়েস্ট প্যারামিটার উভয়ই ফিল্টার করা হবে (এইভাবে রেল ফিল্টার কাজ করে)।
পরিবর্তন এবং অপসারণ
আমরা কিছু পরিবর্তন করেছি এবং কিছু বৈশিষ্ট্য সরিয়ে দিয়েছি যা আর অর্থবহ ছিল না:
- আমরা রুবি 1.9.3 এবং 2.0.x এর জন্য সমর্থন বাদ দিয়েছি; এগিয়ে যাওয়া 2.1.0 সর্বনিম্ন আনুষ্ঠানিকভাবে সমর্থিত সংস্করণ হবে৷ ৷
- আমরা v2 থেকে সমস্ত অবচয় অপসারণ করেছি।
- অপ্রচলিত মেট্রিক্স এবং ট্রেসিং কোড সরানো হয়েছে।
Honeybadger.start
আর প্রয়োজন নেই (এবং ব্যবহার করা হলে একটি ব্যতিক্রম উত্থাপন করবে)। আপনি যদি আগে রেলের বাইরে হানিব্যাজার ব্যবহার করেন তবে আপনিHoneybadger.configure
ব্যবহার করতে পারেন আলাদাHoneybadger::Config
তৈরি না করে এজেন্ট কনফিগার করতে উদাহরণ বা কলিংHoneybadger.start
.- আমরা
plugins.skip
এর নাম পরিবর্তন করেছিskipped_pluggins
এর বিকল্প এবংsidekiq.use_component
এখনtrue
ডিফল্টরূপে। - CGI ভেরিয়েবলগুলি এখন সাদা তালিকাভুক্ত করা হয়েছে যাতে দুর্ঘটনার মাধ্যমে সংবেদনশীল ডেটা ফাঁস করা আরও কঠিন৷
- বিকাশ চলছে,
Honeybadger.notify
পদ্ধতি এখন একটি ব্যতিক্রম উত্থাপন করে যখন বৈধ আর্গুমেন্ট ছাড়া বলা হয়। উত্পাদনে এটি ত্রুটিটি লগ করে। - honeybadger.yml মূল্যায়ন করার সময় ত্রুটি লগ-এর পরিবর্তে এখন উত্থাপিত হয়েছে, আগে কনফিগারেশন সমস্যা চিহ্নিত করতে সাহায্য করে। ত্রুটিগুলি ডিবাগ করা সহজ করার জন্য ERB ট্যাগের মধ্যে ত্রুটিগুলির জন্য ব্যাকট্রেসগুলিও উন্নত করা হয়েছে৷