রেলস 8 অবশেষে এখানে এসেছে, এবং এটি একটি চমত্কার উত্তেজনাপূর্ণ উপায়ে জিনিসগুলিকে কাঁপছে৷ আপনি যদি ইতিমধ্যেই রেল সম্প্রদায়ে সক্রিয় থাকেন, তাহলে আপনি হয়তো ট্যাগলাইনটি শুনে থাকবেন:"কোনও PaaS প্রয়োজন নেই।"
এটি একটি অস্বাভাবিক (কিন্তু আশ্চর্যজনক নয়) মিশন—রিলিজটি সম্পূর্ণরূপে বৈশিষ্ট্যযুক্ত প্ল্যাটফর্ম-এ-সার্ভিস (PaaS) এর প্রয়োজন ছাড়াই আপনার Rails অ্যাপগুলিকে মোতায়েন করা আরও সহজ করার বিষয়ে।
প্ল্যাটফর্মগুলি ডেভেলপারদের তাদের কোড চালানোর অন্তর্নিহিত অবকাঠামো পরিচালনা না করেই ওয়েবে তাদের অ্যাপ পেতে একটি উপায় অফার করে। হেরোকু, রেন্ডার, ফ্লাই এবং রেলওয়ের মতো ব্যবসাগুলি রেল সম্প্রদায়ের জনপ্রিয় পছন্দ। ডেভেলপাররা প্রায়ই ডেভেলপার এক্সপেরিয়েন্স প্ল্যাটফর্ম অফারের জন্য কিছু অতিরিক্ত হোস্টিং খরচ ট্রেড করতে ইচ্ছুক, কিন্তু এই রেল রিলিজ সেই ট্রেডটিকে একটু কম লোভনীয় করে তুলতে চাইছে।
In this article, we'll review the new and improved features that have made it possible. সলিড ক্যাশে, সলিড কিউ এবং সলিড ক্যাবলের মতো জিনিসগুলি রেল 8-এ নতুন এবং আমাদের প্রয়োজনীয় কিছু নির্ভরতা (যেমন রেডিস) ছিনিয়ে নেয়। কামাল 2 এখন স্থাপনার জন্য ডিফল্ট, এবং নতুন প্রমাণীকরণ জেনারেটর রয়েছে যা আরও একটি মণির প্রয়োজনীয়তা দূর করে। আসুন এটিতে প্রবেশ করি।
রেলস 8 কি পরিবর্তন করেছে?
রেল (এবং বিশেষভাবে রেল 8) সত্যিই চায় to make it easier for you to ship applications to production without needing to pay for a platform. রেলের এই প্রকাশের বেশিরভাগ পরিবর্তন সেই মিশনের চারপাশে ঘোরাফেরা করে - Rails অ্যাপ্লিকেশনগুলিকে হোস্ট করতে যে কাজটি লাগে তা হ্রাস করে, কোন PaaS প্রয়োজন ছাড়াই!
আসুন প্রতিটি বড় পরিবর্তনের দিকে একটু নজর দেওয়া যাক।
রিডিস-মুক্ত ক্যাশিংয়ের জন্য সলিড ক্যাশে
রেল ActiveSupport ব্যবহার করে to cache things, which is critical to making web apps performant. ঐতিহাসিকভাবে লোকেরা ক্যাশে করার জন্য রেডিসের দিকে ঝুঁকেছে কারণ এটি দ্রুত এবং নির্ভরযোগ্য।
সলিড ক্যাশে কিছুক্ষণ আগে ActiveSupport-এর জন্য একটি Redis-মুক্ত ক্যাশে স্টোর হিসাবে প্রকাশিত হয়েছিল এটি এখন 37 সিগন্যালে এবং আরও কিছু সময়ের জন্য ব্যবহার করা হচ্ছে, এবং রেল এখন এটিকে ডিফল্ট পছন্দ হিসাবে প্রচার করছে। যেহেতু এটি RAM এর পরিবর্তে ক্যাশে স্টোরের জন্য একটি ডাটাবেস (ডিফল্টভাবে এসকিউলাইট) ব্যবহার করে, তাই আপনি সাধারণত আপনার চেয়ে অনেক বেশি ক্যাশে করতে সক্ষম হওয়ার অতিরিক্ত বোনাস পাবেন। ডাটাবেস স্পেস RAM এর তুলনায় সস্তা, তাই একটি ক্যাশিং সিস্টেম ব্যাক করার জন্য একটি ডাটাবেস ব্যবহার করার সময় RAM ব্যবহার করার চেয়ে ধীরগতির হয়, বেশি সময় ধরে আরও কিছু ক্যাশ করার ক্ষমতা কিছু অ্যাপকে আরও বেশি পারফরম্যান্স করে তুলতে পারে৷
This performance tradeoff is great for some use cases but may not be ideal for others, so it's still easy to use one of the other cache stores. ডিফল্টরূপে Redis বা Memcached-এর প্রয়োজনীয়তা দূর করা হলে আপনি Rails চালু থাকা "কোনও PaaS প্রয়োজন নেই" মিশনের এক ধাপ এগিয়ে যাবে।
রিডিস-মুক্ত ব্যাকগ্রাউন্ড কাজের জন্য কঠিন সারি
You probably already know that Rails uses the ActiveJob আপনার জন্য ব্যাকগ্রাউন্ডের কাজগুলি লিখতে এবং চালানোর জন্য লাইব্রেরি। অনেকটা ক্যাশিং এর মত, রেল আপনাকে ActiveJob শক্তি দেয় এমন ব্যাকএন্ড নির্বাচন করতে দেয় . অনেক লোক Sidekiq বা গুড জব পছন্দ করে, কিন্তু বেশিরভাগ বিকল্পের আজ দুটি সমস্যা আছে:
- এগুলি আমদানি, পরিচালনা এবং সম্ভাব্য অর্থ প্রদানের জন্য আরেকটি নির্ভরতা
- তারা রেডিসের মতো অন্য একটি পরিষেবার উপর নির্ভর করে (যেটি আপনাকে হোস্ট করতে হবে, পরিচালনা করতে হবে এবং সম্ভাব্য অর্থ প্রদান করতে হবে)
Solid Queue seeks to solve both of these by managing background jobs without relying on Redis. আপনি যদি Sidekiq বা রেডিসের উপর নির্ভর করে এমন অন্য সারি প্রদানকারী ব্যবহার করে থাকেন, তাহলে সলিড কিউ একটি বিকল্প যা জটিলতা কমায় এবং হোস্টিংকে সহজ করে তোলে। Like Solid Cache, Solid Queue uses the application's database instead of RAM to keep track of background jobs. এটি আরও একটি বৈশিষ্ট্য যা রেল এখন ডিফল্টভাবে সরবরাহ করছে নির্ভরতা কমাতে এবং উৎপাদন স্থাপনাকে সহজতর করতে।
রিডিস-মুক্ত ওয়েব সকেটের জন্য সলিড কেবল
ডেভেলপারদের রিয়েল-টাইম বৈশিষ্ট্যের জন্য ওয়েব সকেট ব্যবহার করা সহজ করতে রেল অ্যাকশন কেবল ব্যবহার করে। ঐতিহাসিকভাবে, এর জন্য Redis প্রয়োজন। আপনি সম্ভবত অনুমান করতে পারেন এটি কোথায় যাচ্ছে!
Keeping with the 'Solid' theme, Rails 8 ships with another default database-backed adapter. আপনার প্রয়োজন নেই৷ এটি ব্যবহার করার জন্য, কিন্তু আপনি যদি ওয়েব সকেট ব্যবহার করতে চান এবং আপনি Redis কনফিগার এবং বজায় রাখা এড়াতে চান, এটি একটি চমৎকার প্রথম পক্ষের বিকল্প। সলিড ক্যাশে এবং সলিড কিউ সহ, সলিড কেবল Redis-এর প্রয়োজনীয়তা দূর করে এবং ডাটাবেসের উপর ঝুঁকে পড়ার মাধ্যমে PaaS ছাড়া রেল অ্যাপ্লিকেশন পাঠানো আরও সহজ করে তোলে।
সাধারণ স্থাপনার জন্য কামাল 2
Rails 8 এর পরবর্তী নতুন বৈশিষ্ট্যটি সলিড অ্যাডাপ্টার থেকে বেশ আলাদা। Still, Kamal (and specifically Kamal 2) makes it more straightforward to ship applications with your own hardware. কারণ ডকার সফ্টওয়্যারকে মডুলারাইজ করা সহজ করে দিয়েছে, ভাষা নির্বিশেষে ডকার কন্টেইনার পাঠানোর জন্য সফ্টওয়্যারের একটি অংশ থাকা সম্পূর্ণ অর্থপূর্ণ৷
আমার মতে, কামাল, এমনকি Rails 8-এর সাথে জুটিবদ্ধ হলেও, বেশিরভাগ প্ল্যাটফর্মের বিকাশকারীর অভিজ্ঞতাকে সত্যিই স্পর্শ করতে পারে না। তবুও, এটাকে পথ সহজ করে আপনার নিজস্ব ওয়েব সার্ভারে সফ্টওয়্যার পাঠানোর জন্য, এমনকি আপনি রেল ব্যবহার না করলেও! It might not be a complete replacement for a PaaS, but once you have your initial setup completed, running kamal deploy is a huge improvement over doing deployments yourself.
প্রমাণিকরণ জেনারেটর (ডিভাইস ছাড়া!)
If you're making a Rails app that has users , আপনার সম্ভবত প্রমাণীকরণের প্রয়োজন হবে। এখনও অবধি, রেলগুলি কাঠামোর অংশ হিসাবে প্রমাণীকরণ অন্তর্ভুক্ত করেনি। The community has several great solutions to help Rails developers write authentication, the most popular of which is Devise.
প্রমাণিকরণ জেনারেটর সহ 8টি জাহাজ রেল করে . এটি একটি সম্পূর্ণ প্রমাণীকরণ সিস্টেম নয়, তবে এটি আপনাকে গুরুত্বপূর্ণ অংশগুলি (যেমন নিরাপত্তা) সঠিকভাবে পেতে সহায়তা করার জন্য যথেষ্ট। লগইন এবং ব্যবহারকারীর সাইন-আপ প্রবাহ পরিচালনা করার জন্য ভিউ লেখার দায়িত্ব ডেভেলপারের উপর, কিন্তু জেনারেটররা সেশন, পাসওয়ার্ড প্রমাণীকরণ এবং এমনকি পাসওয়ার্ড ইমেলগুলি পরিচালনা করবে। DHH প্রমাণীকরণকারীদের মধ্যে মতামতগুলিকে বাদ দেওয়ার পছন্দটি কীভাবে Rails অ্যাপগুলিকে একই রকম দেখাতে বাধা দেওয়ার জন্য একটি ইচ্ছাকৃত হয় সে সম্পর্কে কিছুটা কথা বলেছে৷
এই নতুন জেনারেটরগুলির সংযোজন শিপিং অ্যাপ্লিকেশনগুলিকে সরাসরি সরল করে না, তবে এটি ওয়েব অ্যাপ্লিকেশন তৈরিতে একটি সাধারণ সমস্যার জন্য একটি প্রথম পক্ষের সমাধান দেয় যা রেলগুলি অনেক দিন ধরে অনুপস্থিত৷
সম্পদ পাইপলাইনের জন্য প্রপশ্যাফ্ট
One of the biggest (under the hood) changes in Rails 8 is the move from Sprockets to Propshaft for the default asset pipeline. Rails still supports Sprockets if you want or need to use it, but new Rails 8 8 applications default to Propshaft.
প্রপশ্যাফ্ট না সম্পর্কে খুব মতামত দেয় বান্ডলিং বা সম্পদ ছোট করা। Just as Rails is looking to make PaaS unnecessary, it's also trying to make complicated build pipelines unnecessary. Like many of the other new defaults in Rails 8, you can use Propshaft with older versions of Rails and still use Sprockets for Rails 8!
SQLite এবং Rails
যদিও SQLite ঠিক Rails এর অংশ নয়, Rails এই রিলিজের সাথে আরও বেশি SQLite এর দিকে ঝুঁকছে। SQLite হল একটি সার্ভারহীন ডাটাবেস ইঞ্জিন, এটি পোস্টগ্রেসের মত কিছুর চেয়ে সহজ করে তোলে। যদি আপনার রেল অ্যাপ্লিকেশন SQLite ব্যবহার করে, তাহলে আপনার ওয়েব প্রক্রিয়া থেকে আলাদাভাবে চলমান কোনো ডাটাবেস প্রক্রিয়ার প্রয়োজন হবে না। Of course, this is very much in line with the mission of Rails 8, making it simpler to ship web applications.
SQLite-এর জন্য প্রথম-পক্ষ সমর্থন সহ রেল 8 জাহাজগুলি, এটি নিশ্চিত করে যে এটি আপনার ঐতিহ্যগত ডাটাবেসের চাহিদাগুলি পরিচালনা করার জন্য যথেষ্ট শক্তিশালী এবং নতুন ডাটাবেস-সমর্থিত সলিড অ্যাডাপ্টারগুলিকে সমর্থন করে৷
Rails 8-এ যা কিছু নতুন তা হল প্ল্যাটফর্মগুলিকে কম প্রয়োজনীয় করার বিষয়ে
আপনি যদি একটি বিদ্যমান Rails অ্যাপকে Rails 8-এ আপগ্রেড করে থাকেন, তাহলে আপগ্রেড সম্পূর্ণ করার জন্য আপনাকে অনেক কিছু করতে হবে না। শুধুমাত্র কিছু জিনিস সরানো হয়েছে, বেশিরভাগই Active Record এ , which has already had deprecation notices for some time. আপনি অবশ্যই, আপনার অ্যাপ্লিকেশন স্থাপনাকে সহজ করার জন্য সমস্ত "রেলস 8-এ নতুন" ডিফল্টের সুবিধা নিতে পারেন, তবে এটি ঐচ্ছিক৷
Rails 8-এ সবচেয়ে বড় পরিবর্তন হল নতুন Rails অ্যাপের জন্য! নতুন রেল অ্যাপগুলি ব্যাকগ্রাউন্ড কাজের জন্য সলিড কিউ, ক্যাশিংয়ের জন্য সলিড ক্যাশে, ওয়েব সকেটের জন্য সলিড কেবল, সম্পদ পাইপলাইনের জন্য প্রপশ্যাফ্ট এবং স্থাপনার জন্য কামাল 2 ডিফল্ট হবে৷
রেলগুলি ইদানীং জটিলতাকে সংকুচিত করার এবং আধুনিক ওয়েব অ্যাপ তৈরির জন্য একটি পূর্ণ-বৈশিষ্ট্যযুক্ত কাঠামো প্রদানের মিশনে রয়েছে৷ রেল 8 তৈরি করা ছাড়িয়ে যায় ওয়েব অ্যাপস এবং শিপিং-এ web apps while remaining compatible with existing options.
You can use all, some, or none of the Rails 8 defaults and still use a platform if you prefer that developer experience. But this release aims to give you the option to skip the platform and take more ownership of your infrastructure.
If you enjoyed this article, sign up for the Honeybadger newsletter for more Ruby and Rails news and tutorials right in your inbox!