Ruby on Rails-এ Email Sending এবং Background Jobs দুটোই গুরুত্বপূর্ণ ফিচার। Email Sending ব্যবহৃত হয় বিভিন্ন কার্যক্রমের জন্য, যেমন ইউজারের রেজিস্ট্রেশন, পাসওয়ার্ড রিসেট, নোটিফিকেশন, ইত্যাদি। Background Jobs ব্যবহার করা হয় দীর্ঘ সময়ের কাজ, যেমন ইমেইল পাঠানো, ভিডিও প্রসেসিং বা ডেটা বিশ্লেষণ, যেগুলি ইউজারের রিকোয়েস্টের সাথে তত্ক্ষণাৎ সম্পর্কিত নয়, কিন্তু অ্যাপ্লিকেশনের কার্যকারিতা বাড়াতে সহায়ক।
এখানে আমরা দেখব কীভাবে Email Sending এবং Background Jobs একসাথে কাজ করে এবং কিভাবে Rails-এ সেগুলো ইন্টিগ্রেট করা যায়।
Email Sending in Ruby on Rails
Rails-এ ইমেইল পাঠানোর জন্য ActionMailer ব্যবহার করা হয়। ActionMailer হল একটি শক্তিশালী ফিচার যা ইমেইল তৈরি এবং পাঠানোর কাজটি সম্পাদন করে।
১. ActionMailer কনফিগারেশন
প্রথমে, Rails অ্যাপ্লিকেশনে ইমেইল কনফিগারেশন করতে হয়। ইমেইল পাঠানোর জন্য সাধারণত SMTP সার্ভার ব্যবহার করা হয়। নিচে একটি সাধারণ SMTP কনফিগারেশন দেওয়া হলো যা Gmail সার্ভারের জন্য।
# config/environments/development.rb
Rails.application.configure do
# অন্যান্য কনফিগারেশন
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"],
authentication: "plain",
enable_starttls_auto: true
}
end
এখানে GMAIL_USERNAME এবং GMAIL_PASSWORD এ আপনার Gmail এর ইউজারনেম এবং পাসওয়ার্ড দিতে হবে। এটি আপনি ENV variables হিসেবে রাখলে আরও নিরাপদ হবে।
২. ActionMailer মডেল তৈরি করা
এখন একটি Mailer মডেল তৈরি করুন, যা ইমেইল তৈরির জন্য দায়িত্বশীল হবে। এর জন্য একটি মেইলার ক্লাস তৈরি করতে হবে।
rails generate mailer UserMailer
এটি একটি নতুন মেইলার ফাইল তৈরি করবে, যেটি আমরা ব্যবহার করব।
# app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer
default from: 'noreply@example.com'
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Welcome to Our Website!')
end
end
এখানে, welcome_email মেথডটি ব্যবহারকারীর জন্য একটি ওয়েলকাম ইমেইল পাঠায়। mail মেথডের মাধ্যমে প্রাপকের ইমেইল এবং সাবজেক্ট সেট করা হয়।
৩. ইমেইল পাঠানো
এখন, আপনি আপনার কন্ট্রোলার বা অন্যান্য জায়গায় এই মেইল পাঠাতে পারেন।
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
UserMailer.welcome_email(@user).deliver_later
redirect_to @user, notice: 'User was successfully created.'
else
render :new
end
end
end
এখানে deliver_later মেথডটি ব্যবহার করা হয়েছে, যা ইমেইল পাঠানোর কাজটি ব্যাকগ্রাউন্ডে পাঠিয়ে দেয়।
Background Jobs Integration
Rails-এ ব্যাকগ্রাউন্ড জব করার জন্য বেশ কিছু gem পাওয়া যায়, তবে সবচেয়ে জনপ্রিয় Sidekiq। এটি Redis-এর মাধ্যমে কাজ করে এবং সহজে স্কেল করা যায়।
১. Sidekiq ইনস্টল করা
প্রথমে, আপনার Rails অ্যাপ্লিকেশনে Sidekiq ইনস্টল করতে হবে।
gem 'sidekiq'
এটি আপনার Gemfile-এ যোগ করুন এবং তারপর bundle install কমান্ড রান করুন।
bundle install
২. Redis ইনস্টল এবং কনফিগারেশন
Sidekiq Redis এর উপর কাজ করে, তাই আপনাকে Redis ইনস্টল করতে হবে। আপনার সিস্টেমে Redis ইনস্টল করে তারপর নিচের কনফিগারেশন করুন।
# config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: 'my_app' }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: 'my_app' }
end
এখানে, redis://localhost:6379/0 হল Redis এর লোকাল ইনস্ট্যান্সের URL।
৩. Background Job তৈরি করা
Sidekiq-এ ব্যাকগ্রাউন্ড জব তৈরি করতে আপনাকে একটি জব ক্লাস তৈরি করতে হবে। এই জবটি ইমেইল পাঠানোর কাজ করতে পারে।
rails generate job send_welcome_email
এটি একটি নতুন জব ক্লাস তৈরি করবে, যেখানে আপনি আপনার কাজ উল্লেখ করবেন।
# app/jobs/send_welcome_email_job.rb
class SendWelcomeEmailJob < ApplicationJob
queue_as :default
def perform(user)
UserMailer.welcome_email(user).deliver_now
end
end
এখানে, perform মেথডে কাজের লজিক দেওয়া হয়েছে, যেমন ইউজারের ইমেইল পাঠানো।
৪. Job কিউ-এ পুশ করা
এখন, যখন আপনি একটি ইমেইল পাঠাতে চান, তখন আপনি এটি ব্যাকগ্রাউন্ড জব হিসাবে কিউ-এ পুশ করবেন:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
SendWelcomeEmailJob.perform_later(@user)
redirect_to @user, notice: 'User was successfully created.'
else
render :new
end
end
end
এখানে, perform_later মেথডটি SendWelcomeEmailJob কিউ-এ পুশ করবে এবং সেটি Sidekiq ব্যাকগ্রাউন্ডে কাজ করবে।
৫. Sidekiq চালানো
এখন, আপনি Sidekiq চালিয়ে ব্যাকগ্রাউন্ড জব প্রসেসিং শুরু করতে পারেন। Sidekiq চালানোর জন্য কমান্ড লাইন থেকে এটি রান করতে হবে:
bundle exec sidekiq
এটি আপনার ব্যাকগ্রাউন্ড জব প্রসেস করতে শুরু করবে এবং ইমেইল পাঠানোর কাজটি ব্যাকগ্রাউন্ডে সম্পন্ন হবে।
সারমর্ম
Ruby on Rails-এ Email Sending এবং Background Jobs এর মাধ্যমে আপনি ইমেইল পাঠানোর কাজটি আরও দক্ষ এবং উন্নত করতে পারেন। ActionMailer ব্যবহার করে সহজে ইমেইল পাঠানো সম্ভব, এবং deliver_later মেথডটি ইমেইল পাঠানোর কাজকে ব্যাকগ্রাউন্ডে পাঠিয়ে দেয়। Sidekiq ব্যবহার করে আপনি ব্যাকগ্রাউন্ড জবের মাধ্যমে সময়সাপেক্ষ কাজগুলোকে পারফর্ম করতে পারেন, যেমন ইমেইল পাঠানো, ভিডিও প্রসেসিং, অথবা অন্য কোনো কাজ যা ইউজারের ইন্টারঅ্যাকশনের সাথে তত্ক্ষণাৎ সম্পর্কিত নয়। এর মাধ্যমে অ্যাপ্লিকেশনটি আরও দক্ষ এবং স্কেলেবল হয়ে ওঠে।
Read more