Debugging Techniques এবং Common Errors

Rails এর Testing এবং Debugging Techniques - রুবি অন রেইল (Ruby on Rails) - Web Development

262

Debugging হল এমন একটি প্রক্রিয়া যার মাধ্যমে কোডে ত্রুটি চিহ্নিত এবং সমাধান করা হয়। Ruby on Rails অ্যাপ্লিকেশন ডেভেলপমেন্টে debugging techniques ব্যবহার করে দ্রুত ত্রুটি নির্ণয় এবং সেগুলির সমাধান করা যায়। এই টিউটোরিয়ালে আমরা বিভিন্ন debugging techniques এবং common errors নিয়ে আলোচনা করব।


1. Debugging Techniques

১.1. byebug ব্যবহার করা

byebug হল একটি জনপ্রিয় ডিবাগিং টুল, যা কোডের মধ্যে একটি নির্দিষ্ট জায়গায় এক্সিকিউশন থামিয়ে দেয় এবং সেখানে ডিবাগিং করার সুযোগ দেয়।

byebug ব্যবহার:
  1. প্রথমে Gemfile এ byebug gem ইনস্টল করুন (যদি না থাকে):

    gem 'byebug'
    
  2. তারপর, bundle install চালান।
  3. কোডের যে জায়গায় থামাতে চান সেখানে byebug লিখুন। উদাহরণ:

    def show
      @user = User.find(params[:id])
      byebug
      # কোড এখানেই থামবে
    end
    
  4. এক্সিকিউশন থামানোর পর আপনি কমান্ড লাইনে বিভিন্ন ভেরিয়েবল চেক করতে পারবেন, যেমন:

    @user
    params[:id]
    
  5. এক্সিকিউশন চালু করার জন্য continue লিখুন।

১.2. rails console ব্যবহার করা

rails console ব্যবহার করে অ্যাপ্লিকেশনের মডেল এবং অন্যান্য অবজেক্টগুলির সাথে ইন্টারঅ্যাক্ট করা যায়। এটি ডিবাগিং করার সময় খুবই কার্যকর।

rails console ব্যবহার:
  1. কমান্ড লাইনে নিচের কমান্ডটি লিখুন:

    rails console
    
  2. তারপর, আপনি মডেলগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারেন, যেমন:

    User.find(1)
    
  3. এখানে আপনি যেকোনো কোড বা মেথড পরীক্ষা করতে পারেন।

১.3. Log Files ব্যবহার করা

Rails অ্যাপ্লিকেশন নিজে থেকেই লগ ফাইল তৈরি করে, যা ডিবাগিং করার সময় সহায়ক হতে পারে। লগ ফাইলগুলো log/ ফোল্ডারে পাওয়া যায়।

লগ ফাইল পর্যবেক্ষণ:
  1. development.log ফাইলের মধ্যে আপনার অ্যাপ্লিকেশনের সমস্ত লগ ডেটা থাকে। এখানে আপনি রিকোয়েস্ট, রেসপন্স এবং অন্যান্য সিস্টেম ইভেন্ট দেখতে পাবেন।

    tail -f log/development.log
    
  2. লগ ফাইল ব্যবহার করে আপনি রিকোয়েস্ট, রেসপন্স, SQL কোয়েরি, এবং অ্যাপ্লিকেশন স্ট্যাক ট্রেস দেখতে পারেন।

১.4. puts এবং logger ব্যবহার করা

আপনি আপনার কোডে বিভিন্ন ভেরিয়েবল এবং অবস্থা চেক করতে puts অথবা Rails.logger ব্যবহার করতে পারেন।

puts ব্যবহার:
puts @user
Rails.logger ব্যবহার:
Rails.logger.debug "User: #{@user}"

এই কমান্ডগুলো আপনার অ্যাপ্লিকেশন স্ট্যাক ট্রেসের মধ্যে মুদ্রিত হবে এবং আপনাকে কোডের অবস্থান বুঝতে সাহায্য করবে।

১.5. binding.pry ব্যবহার করা

Pry একটি শক্তিশালী ডিবাগিং টুল যা Ruby অ্যাপ্লিকেশনের মধ্যে থামানোর জন্য ব্যবহার করা হয়।

binding.pry ব্যবহার:
  1. প্রথমে, Gemfile-এ Pry যোগ করুন:

    gem 'pry'
    
  2. তারপর, bundle install চালান।
  3. কোডে যেকোনো জায়গায় binding.pry ব্যবহার করুন:

    def show
      @user = User.find(params[:id])
      binding.pry  # কোড এখানেই থামবে
    end
    
  4. এক্সিকিউশনের সময় এই লাইনে কোড থেমে যাবে এবং আপনি ইন্টারঅ্যাকটিভভাবে ডিবাগ করতে পারবেন।

2. Common Errors এবং তাদের সমাধান

২.১. ActiveRecord::RecordNotFound

এটি সাধারণত ঘটে যখন আপনি find মেথড ব্যবহার করে এমন একটি রেকর্ড খুঁজে পাওয়ার চেষ্টা করেন যা ডেটাবেসে নেই।

উদাহরণ:
@user = User.find(params[:id])

এটি যদি params[:id]-এ দেওয়া মানের সাথে কোনো রেকর্ড না পাওয়া যায়, তবে ActiveRecord::RecordNotFound ত্রুটি উঠবে।

সমাধান:
  • find_by ব্যবহার করা:

    @user = User.find_by(id: params[:id])
    
  • অথবা, rescue_from দিয়ে কাস্টম এরর হ্যান্ডলিং করা:

    class ApplicationController < ActionController::Base
      rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
    
      def record_not_found
        render plain: "Record not found", status: 404
      end
    end
    

২.২. ActionController::ParameterMissing

এটি ঘটে যখন আপনি কোনো রিকোয়েস্টে প্রাপ্ত প্যারামিটার ভুলভাবে প্রেরণ করেন এবং তা মিসিং থাকে।

উদাহরণ:
def create
  @user = User.create!(params.require(:user).permit(:name, :email))
end

এটি ত্রুটি তৈরি করবে যদি params[:user] প্যারামিটার প্রাপ্ত না হয়।

সমাধান:
  • আপনি permit মেথডের মাধ্যমে প্যারামিটার নিশ্চিত করতে পারেন:

    def create
      @user = User.create!(user_params)
    end
    
    private
    
    def user_params
      params.require(:user).permit(:name, :email)
    end
    
  • এছাড়া, প্যারামিটার মিসিং হলে ডিফল্ট ভ্যালু সেট করতে পারেন:

    params.fetch(:user, {})
    

২.৩. NoMethodError

এই ত্রুটি ঘটে যখন আপনি একটি অবজেক্টের উপর কোনো মেথড কল করেন, কিন্তু সেই অবজেক্টে সে মেথডটি নেই।

উদাহরণ:
user = User.find_by(email: "example@example.com")
user.display_name

এটি ত্রুটি সৃষ্টি করবে যদি user নাল (nil) হয়, কারণ nil অবজেক্টের উপর মেথড কল করা সম্ভব নয়।

সমাধান:
  • নাল চেক করা:

    if user
      user.display_name
    else
      # error handling
    end
    
  • অথবা, try মেথড ব্যবহার করা:

    user.try(:display_name)
    

২.৪. Routing Error

এটি ঘটে যখন আপনি এমন একটি রুট কল করেন যা routes.rb ফাইলে সংজ্ঞায়িত নেই।

উদাহরণ:
No route matches [GET] "/users/1"
সমাধান:
  • rails routes কমান্ড ব্যবহার করে রুটের সঠিক কনফিগারেশন চেক করুন।

সারমর্ম

Ruby on Rails অ্যাপ্লিকেশন ডেভেলপমেন্টে debugging techniques যেমন byebug, rails console, লগ ফাইল পর্যবেক্ষণ, এবং Pry ব্যবহার করে কোডের ত্রুটি চিহ্নিত এবং সমাধান করা সম্ভব। তাছাড়া, বিভিন্ন সাধারণ ত্রুটি যেমন ActiveRecord::RecordNotFound, ActionController::ParameterMissing, এবং NoMethodError এর জন্য নির্দিষ্ট সমাধান রয়েছে যা আপনাকে কার্যকরভাবে ডিবাগging করতে সহায়তা করবে। Rails ডেভেলপমেন্টে এই প্রযুক্তি এবং টুলগুলি ব্যবহার করে দ্রুত সমস্যা সমাধান করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...