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

Ruby on Rails 8 এক্সপ্লোর করুন: নতুন ফিচার ও এনহান্সমেন্ট

প্রথম Rails 8 বেটা অফিশিয়ালি রিলিজ হয়েছে, একটি চমৎকার ফিচার সেট, বাগ ফিক্স, এবং উন্নতি নিয়ে আসে। এই ভার্সন Rails 7.2-এর ফাউন্ডেশনের ওপর নির্মিত, নতুন ফিচার এবং অপ্টিমাইজেশন বোঝাতে Rails ডেভেলপমেন্টকে আরও প্রোডাক্টিভ এবং আনন্দদায়ক করতে।

মुख্য হাইলাইটস অন্তর্ভুক্ত: Kamal 2-এর সাথে ইন্টিগ্রেশন হ্যাসেল-ফ্রি ডিপ্লয়মেন্টের জন্য, Propshaft নতুন ডিফল্ট অ্যাসেট পাইপলাইন হিসেবে পরিচয়, এবং ব্যাপক ActiveRecord এনহান্সমেন্ট। Rails 8 zudem কিছু SQLite ইন্টিগ্রেশন আপগ্রেড নিয়ে আসে যা এটিকে প্রোডাকশন ইউজের জন্য একটি ভায়বল অপশন করে তোলে।

চলুন ডুব মারি এবং এক্সপ্লোর করি Rails 8 যা কিছু অফার করে!

Kamal 2 এবং Thruster-র সাথে সহজ ডিপ্লয়মেন্ট

Rails 8 Kamal 2 এবং Thruster-র সাথে আপনার অ্যাপ্লিকেশন ডিপ্লয় করা সহজ করে তোলে।

Kamal 2 ম্যানেজড ক্লাউড সার্ভিস এবং Platform as a Service (PaaS) প্ল্যাটফর্মের ওপর নির্ভরতা কমিয়ে দেয় ক্লাউড VM, বেয়ার মেটাল সার্ভার, বা VPS এনভায়রনমেন্টে কুইক এবং ইزی ডিপ্লয়মেন্ট সক্ষম করে মাত্র মিনিটে।

একটি একক কমান্ড (kamal setup) দিয়ে, আপনি একটি প্রোডাকশন-রেডি Rails এনভায়রনমেন্ট সেট আপ করতে পারেন একটি স্ট্যান্ডার্ড লিনাক্স বক্সে, ডিপ্লয়মেন্টকে সহজ এবং কস্ট-ইফেক্টিভ করে তুলে।

Kamal 2 Thruster-র সাথে ইন্টিগ্রেট করে, একটি কাস্টম প্রอก্সি যা সপেসিফিক্যালি Rails-এ জন্য বিল্ট, যা জিরো-ডাউনটাইম ডিপ্লয়মেন্ট, HTTP/2 সাপোর্ট, Let's Encrypt-র সাথে অটোমেটেড SSL, Gzip কমপ্রেশন, এবং একাধিক অ্যাপ একক সার্ভারে সহজে হোস্ট করা — সবই কমপ্লেক্স সেটআপ ছাড়া।

Kamal 2 এবং Thruster-র সাথে, Rails 8 অ্যাপ ডিপ্লয় করা কখনও তত সহজ ছিল না। এবং আপনি যদি অন্য ডিপ্লয়মেন্ট সেটআপ পছন্দ করেন, আপনি --skip-kamal ফ্ল্যাগ ব্যবহার করে অপ্ট-আউট করতে পারেন আপনার বিদ্যমান ওয়ার্কফ্লো বজায় রাখতে।

Solid Adapter-র সাথে লিনিয়ার Rails ডিপ্লয়মেন্ট

Rails 8-এ বড় উন্নতির একটি হলো সাধারণ ওয়েব অ্যাপ্লিকেশন প্রয়োজনীয়তা ইমপ্লিমেন্ট করার জন্য অতিরিক্ত সার্ভিসের সংখ্যা কমিয়ে ডিপ্লয়মেন্টকে সহজ করা।

ঐতিহাসিকভাবে, আপনি যদি জব কিউ, ক্যাশিং, এবং পাব/সাব মেসেজিং যেন ফিচার দরকার হতো, আপনি PostgreSQL-এর মতো একটি ডাটাবেস Redis-এর সাথে ব্যবহার করতেন অক্সিলিয়ারি ফাংশনগুলির জন্য।

Rails 8-এ, আপনি শুধু SQLite-র সাথে এই সব হ্যান্ডেল করতে পারেন, তিনটি নতুন ডাটাবেস-ব্যাকড অ্যাডাপ্টারের জন্য: Solid Cable, Solid Cache, এবং Solid Queue।

  1. Solid Cable প্রোডাকশনে Rails-এর নতুন ডিফল্ট Action Cable অ্যাডাপ্টার এবং মানে আপনি Redis-এ সাধারণ নির্ভরতা ড্রপ করতে পারেন। এটি পাব/সাব সার্ভার হিসেবে কাজ করে, অ্যাপ এবং কানেক্টেড ক্লায়েন্টের মধ্যে ফাস্ট পোলিং থ্রু SQLite দিয়ে মেসেজ রিলে করে। পোলিংয়ের সত্ত্বেও, Solid Cable-এর পারফরম্যান্স অধিকাংশ পরিস্থিতিতে Redis-এ তুলনা করা যায়।

  2. Solid Cache RAM-এর বদলে ডিস্ক স্টোরেজ ব্যবহার করে Redis-র প্রয়োজনীয়তা প্রতিস্থাপন করে। এই অ্যাপ্রোচ বড়, আরও কস্ট-ইফেক্টিভ ক্যাশ অনুমতি দেয় যা বেশি lâu পারসিস্ট করে এবং পারফরম্যান্স স্যাক্রিফাইস ছাড়া আরও বেশি রিকোয়েস্ট হ্যান্ডেল করে। এটি এনক্রিপ্টেড স্টোরেজ এবং রিটেনশন পলিসি সাপোর্ট করে প্রাইভেসি রিকোয়ারমেন্ট মিট করতে।

  3. Solid Queue Active Job ব্যাকগ্রাউন্ড প্রসেসিং-এর জন্য Redis প্রতিস্থাপন করে, FOR UPDATE SKIP LOCKED মেকানিজম ব্যবহার করে দক্ষ জব হ্যান্ডলিং (PostgreSQL, MySQL, বা SQLite-র সাথে কম্প্যাটিবল)। এতে কনকারেন্সি কন্ট্রোল, রিট্রাই, এবং রিকারিং জবসহ অতিকর্ষণীয় ফিচার অন্তর্ভুক্ত থাকে, এবং HEY-এ নিজেকে প্রমাণ করে দিয়েছে, যেখানে এখন এটি ২০ মিলিয়ন জব প্রতিদিন ম্যানেজ করে।

এই তিনটি অ্যাডাপ্টার একটি সিম্পল আইডিয়ার ওপর ডিজাইন করা: আধুনিক SSD এবং NVMe ড্রাইভ যতেষ্ট দ্রুত যাতে nhiều টাস্ক হ্যান্ডল করতে পারে যেগুলো আগে ইন-মেমরি সমাধান যেমন Redis দরকার হতো। এই দ্রুত ড্রাইভগুলোতে ট্যাপ করে, Rails আলাদা RAM-ভিত্তিক টুলগুলোর প্রয়োজনীয়তা কাটিয়ে দিয়েছে।

SQLite প্রোডাকশনের জন্য প্রস্তুত

Rails 8 SQLite-কে একটি লাইটওয়েট ডেভেলপমেন্ট টুল থেকে একটি নির্ভরযোগ্য প্রোডাকশন চয়েসে রূপান্তরিত করেছে, SQLite অ্যাডাপ্টার এবং Ruby ড্রাইভারের ওপর ব্যাপক কাজের 덕분।

উপরোক্ত সলিড অ্যাডাপ্টারগুলোর পরিচয়ের সাথে, SQLite এখন Action Cable, Rails.cache, এবং Active Job-কে ইফেক্টিভলি পাওয়ার করার ক্যাপাবিলিটি রাখে, এর ভূমিকা শুধু প্রোটোটাইপিং বা টেস্টিং এনভায়রনমেন্টের বাইরে প্রসারিত করে।

Rails 8-এ SQLite ইন্টিগ্রেশনে কিছু মূল উন্নতি:

  • ফুল-টেক্সট সার্চ এবং ভার্চুয়াল টেবিল এখন সাপোর্টেড create_virtual_table ব্যবহার করে।
  • অ্যাডাপ্টার এখন বাল্ক ইন্সার্ট ফিক্সচার্স অনুমতি দেয় এনহান্সড ডেটা সিডিং পারফরম্যান্সের জন্য।
  • ট্রানজ্যাকশন ডিফল্টলি IMMEDIATE মোডে কনকারেন্সি উন্নত করতে।
  • SQLite3::BusyException-কে ActiveRecord::StatementTimeout-এ ট্রান্সলেট করে এনহান্সড এরর হ্যান্ডলিং।

Propshaft-র সাথে অ্যাসেট পাইপলাইনের একটি নতুন যুগ

Rails 8 Propshaft-কে নতুন অ্যাসেট পাইপলাইন ডিফল্ট হিসেবে পরিচয় করিয়ে দিয়েছে, দীর্ঘদিনের Sprockets সিস্টেম প্রতিস্থাপন করে। Sprockets Rails ডেভেলপারদের এক দশক যাবত ভালো সার্ভিস করল, কিন্তু এটি একটি ভিন্ন যুগে ডিজাইন করা হয়েছিল — JavaScript বিল্ড টুল এবং মডার্ন ব্রাউজার উন্নতির বিস্ফোরণের আগে।

Propshaft আজকের ডেভেলপারদের কোর প্রয়োজনের চারপাশে নির্মিত একটি সিম্পলার, মডার্ন অ্যাপ্রোচকে রিফ্লেক্ট করে অ্যাসেট ম্যানেজ করার। এর উদ্দেশ্য সরাসরি: অ্যাসেটের জন্য একটি স্পষ্ট পথ প্রদান করা এবং ক্যাশিং-এর জন্য ডাইজেস্ট স্ট্যাম্প অ্যাপ্লাই করা।

Sprockets-এর বিপরীতে, যেটি অনেক অতিরিক্ত টাস্ক নিলো, Propshaft শুধু যে অপরিহার্য সেটার ওপর ফোকাস করে, নতুন Rails ফিলোসফির সাথে প্রাকৃতিকভাবে ফিট করে অ্যাসেট পাইপলাইন লিন রাখতে (য 뛰 JavaScript হ্যান্ডলিং স্পেশালাইজড টুল যেমন Esbuild বা Vite-র ওপর ছেড়ে দেওয়া হয়)।

বিল্ট-ইন অথেন্টিকেশন সিম্পল করা হয়েছে

Rails বছরের পর বছর অথেন্টিকেশনের মূল কম্পোনেন্টগুলো বিল্ড করে আসছে, has_secure_password Rails 5-এ থেকে normalizes, generates_token_for এবং authenticate_by Rails 7.1-এ।

Rails 8-এ, এই সব কম্পোনেন্ট একসাথে আসে আপনাকে একটি সহজ স্ট্রাটিং পয়েন্ট দিতে একটি সিকিউর, সেশন-ভিত্তিক অথেন্টিকেশন সিস্টেম বিল্ড করার জন্য।

একটি একক কমান্ড রান করে, আপনি একটি অথেন্টিকেশন সিস্টেমের সকল এসেনশিয়াল সেট আপ করতে পারেন ডাটাবেস-ব্যাকড সেশন এবং পাসওয়ার্ড রিসেট ফাংশনালিটির সাথে:


এই কমান্ড কী ফাইলগুলো জেনারেট করে, যার মধ্যে রয়েছে মডেল, কন্ট্রোলার, মেইলার, এবং ভিউ:


এটি কার্যকরভাবে আপনাকে সিকিউর, প্রোডাকশন-রেডি অথেন্টিকেশনের ফাস্ট ট্র্যাক-এ রাখে। যা বাকি থাকে সেটি আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুযায়ী কাস্টমাইজড একটি ইউজার সাইন-আপ ফ্লো ইন্টিগ্রেট করা।

নতুন Script ফোল্ডার এবং জেনারেটর

Rails 8 একটি নতুন script ফোল্ডার পরিচয় করায় এক-অফ বা জেনারেল-পারপাস স্ক্রিপ্ট হোল্ড করার জন্য, যেমন ডেটা মাইগ্রেশন, ক্লিনআপ টাস্ক, বা অন্যান্য ইউটিলিটি অপারেশন। এই অ্যাডিশন এই স্ক্রিপ্টগুলো সুন্দরভাবে অর্গানাইজ করতে সাহায্য করে, আপনার মেইন অ্যাপ্লিকেশন লজিক থেকে আলাদা রেখে।

স্ক্রিপ্ট তৈরি করা সহজ করার জন্য, একটি নতুন স্ক্রিপ্ট জেনারেটর উপলব্ধ। আপনি স্ক্রিপ্ট জেনারেট করতে পারেন একটি সিম্পল কমান্ড দিয়ে:


এই কমান্ডগুলো সংশ্লিষ্ট স্ক্রিপ্ট ফাইল তৈরি করে, যেগুলো আপনি তারপর এক্সিকিউট করতে পারেন:


এই স্ট্রিমলাইনড অ্যাপ্রোচ আপনার অ্যাপ্লিকেশন অর্গানাইজড রাখে এবং কাস্টম স্ক্রিপ্ট হ্যান্ডল করা আরও কনভেনিয়েন্ট এবং মেইনটেইনেবল করে।

Active Record উন্নতির এক ধারা

Active Record-এও Rails 8-এ বড় এনহান্সমেন্ট দেখা দিয়েছে পারফরম্যান্স উন্নত করতে, মাইগ্রেশন সিম্পলিফাই করতে, ট্রাবলশুটিং উন্নত করতে, এবং জটিল ডাটাবেস ইউজ কেসের জন্য বেটার সাপোর্ট প্রদান করতে।

নিচে এই লেটেস্ট ভার্সনে পরিচয় করানো কিছু মূল পরিবর্তন দেওয়া হলো:

  • Rails 8 এখন PostgreSQL-এ float4 এবং float8-এ পার্থক্য করতে পারে।
  • drop_table এখন একাধিক টেবিল একসাথে ড্রপ করা সাপোর্ট করে।
  • PostgreSQL-এ টেবিল তৈরি করার সময় অ্যাডভান্সড অপশন সাপোর্ট, ইনহেরিটেন্স এবং পার্টিশনিং সহ।
  • বাল্ক ইন্সার্ট অফ ফিক্সচার্স এখন সাপোর্টেড ডেটা সিডিং পারফরম্যান্স উন্নত করতে।
  • একটি ফ্রেশ ডাটাবেস মাইগ্রেট করা এখন ডাটাবেস স্কিমা লোড করে শুরু হয় মাইগ্রেশন রান করার আগে।
  • create_schema এবং drop_schema অপারেশন এখন রিভার্সিবল।
  • Rails 8 এখন MySQL 5.6.4 বা লেটার রিকোয়ার করে ডেটটাইম উইথ প্রিসিশনের মতো এডভান্সমেন্টের কারণে।
  • কোয়েরি লগ ট্যাগ ডেভেলপমেন্ট এনভায়রনমেন্টে ডিফল্টলি এনাবলড থাকে SQL স্টেটমেন্টকে অ্যাপ্লিকেশন কোডে ফিরিয়ে ট্রেস করতে এবং কোন ডাটাবেস ব্যবহার হচ্ছে সেটি আইডেন্টিফাই করতে।

উপসংহার

Rails 8 একটি ইম্প্যাক্টফুল আপডেটের রেঞ্জ পরিচয় করিয়েছে, Kamal-র সাথে সহজ ডিপ্লয়মেন্ট থেকে মডার্ন অ্যাসেট পাইপলাইন, সিগনিফিক্যান্ট ActiveRecord এনহান্সমেন্ট, এবং SQLite-এর উন্নত প্রোডাকশন ক্যাপাবিলিটি পর্যন্ত।

এই এডভান্সমেন্টগুলো শুধু ডেভেলপার প্রোডাক্টিভিটি বাড়াতে না, আধুনিক সেরা অনুশীলনের সাথে আলাইন করে, আপনাকে আপনার অ্যাপ্লিকেশন বিল্ড করার ওপর ফোকাস করতে দেয় ইনফ্রাস্ট্রাকচার কমপ্লেক্সিটির সাথে ডিল করার বদলে।

সব নতুন ফিচার, অপ্টিমাইজেশন, এবং পরিবর্তনের বিস্তারিত তালিকার জন্য, অফিশিয়াল Rails 8 রিলিজ নোটস চেক আউট করুন।

আপনি যদি Rails-এ কন্ট্রিবিউট করতে চান, Rails GitHub রিপোজিটরি ভিজিট করুন ওপেন ইস্যু এক্সপ্লোর করতে এবং কন্ট্রিবিউশন গাইডলাইন রিভিউ করতে।

পড়ার জন্য ধন্যবাদ!

P.S. আপনি যদি Ruby Magic পোস্টগুলো প্রেস থেকে বের होते ही পড়তে চান, আমাদের Ruby Magic নিউজলেটার সাবস্ক্রাইব করুন এবং কখনো একটি পোস্ট মিস করবেন না!

Ruby on Rails 8 এক্সপ্লোর করুন: নতুন ফিচার ও এনহান্সমেন্ট

Damilola Olatunji

Damilola লাগোস, নাইজেরিয়া-ভিত্তিক একটি ফ্রিল্যান্স টেকনিক্যাল রাইটার এবং সফটওয়্যার ডেভেলপার। তিনি JavaScript এবং Node.js-এ স্পেশালাইজ করেন, এবং ডেভেলপারদের জন্য সংক্ষিপ্ত এবং প্র্যাকটিক্যাল আর্টিকেল ডেলিভার করার লক্ষ্য রাখেন। লিখতে বা কোডিং না করার সময়, তিনি পড়া, গেম খেলা, এবং ভ্রমণ করার উপভোগ করেন।

Damilola Olatunji-এর সকল আর্টিকেল


  1. জাভাতে JTextField-এ প্যাডিং যোগ করুন

  2. HTML DOM del cite প্রপার্টি

  3. অ্যান্ড্রয়েডে স্ট্যাটাস বারের উচ্চতা কীভাবে জানবেন?

  4. CSS দিয়ে ড্রপডাউন নেভিগেশন বার তৈরি