কম্পিউটার টিউটোরিয়াল

গ্রেপে এক্সেপশন হ্যান্ডলিং মাস্টারিং:কাস্টম ত্রুটি, সেরা অনুশীলন এবং অ্যাপসিগন্যাল ইন্টিগ্রেশন

আঙ্গুর হল RESTful API তৈরির জন্য একটি জনপ্রিয় রুবি ফ্রেমওয়ার্ক। ব্যতিক্রম হ্যান্ডলিং যেকোন অ্যাপ্লিকেশনের স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যার মধ্যে গ্রেপ দিয়ে তৈরি করা হয়৷

এই নিবন্ধটি গ্রেপ ব্যতিক্রম পরিচালনার মৌলিক বিষয়গুলি অন্বেষণ করবে, ব্যতিক্রমগুলি কাস্টমাইজ করা সহ। আমরা কিছু সর্বোত্তম অনুশীলনের উপরও স্পর্শ করব, এবং উন্নত ত্রুটি পর্যবেক্ষণ এবং পরিচালনার জন্য অ্যাপসিগন্যালের সাথে কীভাবে আপনার অ্যাপকে একীভূত করবেন।

চলুন শুরু করা যাক!

আঙ্গুর ব্যতিক্রম পরিচালনার মূল বিষয়গুলি

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে রেলে তৈরি গ্রেপ এপিআই-এ ব্যতিক্রমগুলি পরিচালনা করতে হয়। আমি এর জন্য একটি ডেমো জব বোর্ড API তৈরি করেছি এবং আপনি GitHub-এ সোর্স কোডটি দেখতে পারেন।

একটি ব্যতিক্রম উত্থাপন

আপনি error! ব্যবহার করে গ্রেপে একটি ব্যতিক্রম বাড়াতে পারেন . উদাহরণস্বরূপ, উপরে উল্লিখিত কাজের API-এ, আমাদের একটি show আছে রুট যা ID এর উপর ভিত্তি করে একটি কাজ ফেরত দেয় . আমরা একটি 404 ফেরত দিতে পারি রেকর্ড উপলব্ধ না হলে ত্রুটি, যেমন:

 

আপনি যখন একটি ব্যতিক্রম উত্থাপন করেন, আপনি এটি একটি "অনন্য" উপায়ে পরিচালনা করতে চাইবেন — আপনি সম্ভবত আপনার ব্যবহারকারীদের কাছে উত্থাপিত ব্যতিক্রম পাঠাতে চাইবেন না।

রুবিতে, ব্যতিক্রম পরিচালনার জন্য আমাদের একটি ডিফল্ট প্রক্রিয়া রয়েছে। এটি মোড়ানো কোড দ্বারা কাজ করে যা একটি begin এ একটি ব্যতিক্রম বাড়াতে পারে ব্লক rescue উত্থাপিত ব্যতিক্রম পরিচালনা করতে ব্লক ব্যবহার করা হয়।

 

সুতরাং, এটি একটি সাধারণ পরিস্থিতিতে কেমন হবে তা এখানে:

 

rescue_from পদ্ধতি

আপনি যখন ব্যতিক্রমগুলি উত্থাপন করেন, বা সেগুলি আপনার সরাসরি জড়িত ছাড়াই ঘটে, আপনি সেগুলিকে সঠিকভাবে পরিচালনা করতে চাইবেন৷ ডিফল্টরূপে, Grape একটি rescue_from প্রদান করে পদ্ধতি এটি আপনাকে কোডের একটি ব্লক নির্দিষ্ট করতে দেয় যা সংজ্ঞায়িত ব্যতিক্রমগুলি উত্থাপিত হলে কার্যকর করা হয়৷

সুতরাং, 404 "উদ্ধার" বা পরিচালনা করতে jobs-এ উত্থাপিত অন্য যেকোনো একটির আগে আমরা ভুলটি উত্থাপন করেছি রিসোর্স, আমরা rescue_from ব্যবহার করতে পারি পদ্ধতি পদ্ধতিটি jobs এর উপরে যোগ করা হয়েছে সম্পদ।

 

আমরা ব্যবহার করা বিষয়বস্তুর প্রকারও নির্দিষ্ট করতে পারি:

 

একটি ব্যতিক্রম পরিচালনা করার এই পদ্ধতিটি খুব সাধারণ — আমরা প্রতিটি ধরনের ব্যতিক্রম উদ্ধার করছি এবং একটি 404 দিয়ে একটি ত্রুটি ফিরিয়ে দিচ্ছি স্ট্যাটাস কোড। আমাদের API ব্যবহারকারীরা একটি 400 পাওয়ার আশা করলে এটি বিভ্রান্তিকর স্ট্যাটাস কোড।

পরিবর্তে আমরা যে ব্যতিক্রমটি পরিচালনা করতে চাই তা নির্দিষ্ট করতে পারি:

 

যখন আমরা একটি ActiveRecord::RecordNotFound সম্মুখীন হই ত্রুটি, আমরা একটি 404 সহ একটি ত্রুটি বার্তা ফেরত দেব স্ট্যাটাস কোড। অন্যথায়, আমরা একটি 500 সহ একটি ত্রুটি বার্তা ফেরত দেব স্ট্যাটাস কোড।

এটি দেখায় যে আমাদের বর্তমানে যা আছে তাতে আমরা উন্নতি করতে পারি, কিন্তু আমরা যদি এমন একটি ত্রুটি হ্যান্ডলার চাই যা সকল থেকে উদ্ধার করে ত্রুটি? এখানেই কাস্টমাইজিং ব্যতিক্রমগুলি আসে৷

রুবির জন্য গ্রেপে ব্যতিক্রম কাস্টমাইজ করা

ত্রুটির ধরণের উপর নির্ভর করে, এই ত্রুটি হ্যান্ডলার সঠিক স্থিতি কোডের পাশাপাশি একটি ত্রুটি বার্তা ফেরত দিতে সক্ষম হওয়া উচিত।

প্রথমে, exceptions_handler নামে একটি ফাইল তৈরি করুন . তারপর, আমরা আমাদের বর্তমান ব্যতিক্রম হ্যান্ডলারগুলিকে ফাইলটিতে সরিয়ে দেব:

 

আমাদের ExceptionHandler মডিউল ActiveSupport::Concern ব্যবহার করে , আমাদের included এর মত কার্যকারিতা অ্যাক্সেস করার অনুমতি দেয় এবং class_methods . উপরের স্নিপেটে, আমাদের included-এ ত্রুটির হ্যান্ডলার আছে ব্লক, তাই যেখানেই এই মডিউলটি অন্তর্ভুক্ত করা হয়েছে, সেগুলি সংজ্ঞায়িত হিসাবে উপলব্ধ হবে৷

আমরা এগিয়ে যেতে পারি এবং এরর হ্যান্ডলারকে ফাইলগুলি থেকে সরিয়ে ফেলতে পারি যেখানে আমাদের আগে সেগুলি ছিল। তারপর আমরা ExceptionsHandler অন্তর্ভুক্ত করতে পারি আমাদের API এন্ট্রি ফাইলের মডিউল — api.rb :

 

আসুন আমাদের ত্রুটিগুলির জন্য একটি বেস এরর ক্লাস তৈরি করি। এই ক্লাসটি ত্রুটির প্রতিক্রিয়া ফেরানোর জন্য দায়ী থাকবে৷

 

ক্লাস দুটি কীওয়ার্ড প্যারামিটার গ্রহণ করে:একটি message স্ট্রিং এবং একটি status . কোনোটি পাস না হলে, আমরা ডিফল্ট ব্যবহার করব।

body-এ পদ্ধতি, আমরা একটি রাক প্রতিক্রিয়া ফিরে. ডিফল্টরূপে, rescue_from হ্যান্ডলারকে অবশ্যই একটি Rack::Response ফেরত দিতে হবে বস্তু, error! কল করুন , অথবা একটি ব্যতিক্রম উত্থাপন করুন।

আমরা এগিয়ে যেতে পারি এবং ExceptionsHandler-এ এটি ব্যবহার করতে পারি :

 

যখন আমরা /error কল করি শেষ পয়েন্ট, আমরা oops দেখতে পাব প্রতিক্রিয়া হিসাবে ফিরে. এই মুহুর্তে, আমরা NotFound এর জন্য একটি ক্লাস তৈরি করতে পারি ত্রুটি।

 

NotFound ক্লাস শুধুমাত্র message গ্রহণ করে . যেহেতু এটি BaseError থেকে উত্তরাধিকার সূত্রে প্রাপ্ত , আমাদের একটি Rack::Response ফেরত দিতে হবে না আবার। আমরা এগিয়ে যেতে পারি এবং এটি ExceptionsHandler-এ ব্যবহার করতে পারি এই মত:

 

এখন, যদি আমরা ম্যানুয়ালি এরকম একটি ত্রুটি উত্থাপন করার চেষ্টা করি:

 

এটি ঠিক কাজ করবে, কিন্তু স্ট্যাটাস কোড হবে 500 , কারণ এটি BaseError-এ প্রতিক্রিয়া প্রদান করে ক্লাস ( BaseError হিসাবে ক্লাস ত্রুটিটি পরিচালনা করে)। এটি ঠিক করতে, আমাদের ExceptionHandler সংশোধন করতে হবে স্পষ্টভাবে NotFound ব্যবহার করতে এর পরিবর্তে ত্রুটি পরিচালনা করার জন্য ক্লাস।

সুতরাং, যখনই ActiveRecord::RecordNotFound এর সাথে সম্পর্কিত একটি ত্রুটি এবং V1::Exceptions::NotFound সম্মুখীন হয়, Exceptions::NotFound ব্যবহার করুন . অন্যথায়, Exceptions::BaseError ব্যবহার করুন .

 

আপনি দেখতে পারেন যে আমাদের নির্দিষ্টrescue_from প্রয়োজন হবে  আমরা আরো ত্রুটি ক্লাস তৈরি করার সাথে সাথে ব্লক করে। আমরা কেস স্টেটমেন্ট ব্যবহার করে এটি উন্নত করতে পারি:

 

এবং ভয়াল!

সর্বোত্তম অভ্যাস এবং টিপস

যদিও এমন অনেকগুলি সেরা অনুশীলন রয়েছে যা আপনি ব্যতিক্রম পরিচালনার জন্য নিযুক্ত করতে পারেন, এখানে অনুসরণ করার জন্য কয়েকটি দ্রুত টিপস রয়েছে:

  1. গ্রুপ সম্পর্কিত ব্যতিক্রম:আমরা উপরের কোডে যেমন দেখেছি, গ্রুপিং সম্পর্কিত ব্যতিক্রমগুলি আমাদের রক্ষণাবেক্ষণযোগ্য কোড থাকতে দেয়। আমরা যে ব্যতিক্রমগুলি পরিচালনা করতে চাই তার সংখ্যা বাড়ার সাথে সাথে আমরা সেগুলিকে আমাদের তালিকায় যুক্ত করতে পারি৷
  2. error! এর মত সাহায্যকারী ব্যবহার করুন দ্রুত ব্যতিক্রম বাড়াতে। এটি আপনার ব্যতিক্রম পরিচালনাকে সহজ করে।
  3. অ্যাপসিগন্যালের মত ব্যতিক্রম পর্যবেক্ষণ টুল ব্যবহার করুন।

AppSignal ইন্টিগ্রেশন:Ruby এর জন্য Grape

AppSignal আপনাকে আপনার অ্যাপ্লিকেশনগুলিতে ত্রুটিগুলি নিরীক্ষণ এবং ট্র্যাক করতে সহায়তা করে৷ আপনার Grape API এর সাথে AppSignal একত্রিত করা আপনাকে ব্যতিক্রমগুলির জন্য মূল্যবান অন্তর্দৃষ্টি দেয়৷ এই নির্দেশিকাটি আপনাকে দেখায় কিভাবে আপনার Grape API-এর সাথে AppSignal একীভূত করতে হয়৷ যখনই আপনার API-এ কোনো ত্রুটি দেখা দেয়, আপনি এটিকে আপনার AppSignal ড্যাশবোর্ডে দেখতে পাবেন, যেমন:

গ্রেপে এক্সেপশন হ্যান্ডলিং মাস্টারিং:কাস্টম ত্রুটি, সেরা অনুশীলন এবং অ্যাপসিগন্যাল ইন্টিগ্রেশন

র্যাপিং আপ

ব্যতিক্রম হ্যান্ডলিং শক্তিশালী এপিআই বিকাশের একটি গুরুত্বপূর্ণ দিক। এই টিউটোরিয়ালে, আমরা দেখেছি কিভাবে একটি Grape API-এ ব্যতিক্রমগুলি সঠিকভাবে পরিচালনা করা যায়। আমরা সংক্ষিপ্তভাবে কিছু সেরা অনুশীলন এবং AppSignal-এর ইন্টিগ্রেশন গ্রেপের জন্য দেখেছি।

ব্যতিক্রম হ্যান্ডলিং একটি চলমান প্রক্রিয়া — যা আপনাকে ধারাবাহিকভাবে উন্নতি করতে হবে।

শুভ কোডিং!

পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!

পি.পি.এস. আপনি কি জানেন যে AppSignal একটি সক্রিয় রেকর্ড ইন্টিগ্রেশন অফার করে? আরও জানুন৷

গ্রেপে এক্সেপশন হ্যান্ডলিং মাস্টারিং:কাস্টম ত্রুটি, সেরা অনুশীলন এবং অ্যাপসিগন্যাল ইন্টিগ্রেশন

কিংসলে চিজিওকে


  1. ভাষার জন্য একটি টিউরিং মেশিন নির্মাণ করুন L ={wwr | w ∈ {0, 1}}

  2. কিভাবে টেনসরফ্লো ব্যবহার করে অটো MPG-তে একটি ক্রমিক মডেল তৈরি করা যেতে পারে?

  3. ফায়ারফক্স ব্রাউজার থিম কিভাবে পরিবর্তন করবেন?

  4. সহজে আপনার রুবি অন রেল প্রকল্পে Tailwind CSS একীভূত করুন