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

Rails ৮ উদ্ঘാടন: মূল ফিচার এবং ডিপ্লয়মেন্ট স্বাধীনতা

রেলস ৮ অবশেষে এসেছে, এবং এটি কিছু একসাইটিং ভাবে জিনিসগুলো হिलाয় দিচ্ছে। আপনি যদি ইতিমধ্যে রেলস কমিউনিটিতে সক্রিয় থাকেন, তবে আপনি ট্যাগলাইনটি শুনতে পেরে থাকেন: "No PaaS Required।"

এটি একটি অস্বাভাবিক (তবে আশ্চর্য না) মিশন — রিলিজটি আপনার রেলস অ্যাপস ডিপ্লয় করা সহজ করার ওপর ফোকাসড যাতে আপনাকে ফুল-ফিচার্ড প্ল্যাটফর্ম-অ্যাজ-অ-সার্ভিস (PaaS) দরকার নয়।

প্ল্যাটফর্মগুলো ডেভেলপারদের একটি উপায় দেয় তাদের অ্যাপসকে ওয়েবে পৌঁছানোর জন্য আন্ডারলাইং ইনফ্রাস্ট্রাকচার ম্যানেজ না করে যেটা তাদের কোড রান করে। Heroku, Render, Fly, এবং Railway বізনেসগুলো রেলস কমিউনিটিতে জনপ্রিয় পছন্দ রहीं। ডেভেলপাররা প্রায়শই এক্সট্রা হোস্টিং কস্টের বিনিময়ে প্ল্যাটফর্মের ডেভেলপার এক্সপেরিয়েন্সের জন্য রাজি হন, কিন্তু এই রেলস রিলিজ সেট্রেডকে একটু কম লোভনীয় করার চেষ্টা করছে।

এই আর্টিকেলে, আমরা নতুন এবং উন্নত ফিচারগুলো রিভিউ করব যেগুলো এটা সম্ভব করে দিয়েছে। Solid Cache, Solid Queue, এবং Solid Cable রেলস ৮-এ নতুন এবং কিছু ডিপেন্ডেন্সি সরিয়ে দিয়েছে (যেমন রেডিস)। Kamal ২ এখন ডিপ্লয়মেন্টের জন্য ডিফল্ট, এবং নতুন অথেন্টিকেশন জেনারেটরগুলো যেটা আরেকটি জেমের প্রয়োজনিয়ত সরিয়ে দিয়েছে। চলুন জানি।

রেলস ৮ কী পরিবর্তন করল?

রেলস (বিশেষ করে রেলস ৮) খুব চায় আপনাকে প্ল্যাটফর্মের জন্য টাকা দিয়ে ছাড়া অ্যাপ্লিকেশন প্রোডাকশনে শিপ করা সহজ করা। এই রিলিজের অধিকাংশ পরিবর্তন সেই মিশনের চারপাশে ঘুরে - রেলস অ্যাপ্লিকেশন সেলফ-হোস্ট করার কাজ কমাতে, কোনো PaaS ছাড়া!

Rails ৮ উদ্ঘാടন: মূল ফিচার এবং ডিপ্লয়মেন্ট স্বাধীনতা চলুন প্রতিটি বড় পরিবর্তনকে নজদিক থেকে দেখি।

Solid Cache: রেডিস-ফ্রি ক্যাশিং

রেলস ActiveSupport ব্যবহার করে ক্যাশিং করে, যা ওয়েব অ্যাপসকে পারফরম্যান্ট बनाने জন্য ক্রিটিক্যাল। ঐতিহাসিকভাবে লোকেরা রেডিস ব্যবহার করে ক্যাশিংয়ের জন্য কারণ এটি দ্রুত এবং নির্ভরযোগ্য।

Solid Cache কিছুসময় আগে রিলিজ হয়েছিল ActiveSupport-এর জন্য একটি রেডিস-ফ্রি ক্যাশ স্টোর হিসেবে। এটি ৩৭সিগন্যালস এবং অন্যান্য জায়গায় কিছু সময় ধরে ব্যবহৃত হচ্ছে, এবং রেলস এখন এটাকে ডিফল্ট চয়েস হিসেবে প্রোমোট করছে। কারণ এটি র‍্যামের বদলে ডাটাবেস (ডিফল্টরূপে SQLite) ক্যাশ স্টোর হিসেবে ব্যবহার করে, আপনাকে অতিরিক্ত বোনাস মেলে যেনে আপনি সচেতনতএ অনেক বেশি ক্যাশ করতে পারেন। ডাটাবেস স্পেস র‍্যামের চেয়ে সস্তা, তাই ডাটাবেসকে ক্যাশিং সিস্টেমের পিছনে ব্যবহার করা র‍্যাম ব্যবহার করার চেয়ে স্লো হলেও, আরও বেশি জিনিস বেশি সময় ধরে ক্যাশ করার ক্ষমতা কিছু অ্যাপকে আরও পারফরম্যান্ট বানাতে পারে।

এই পারফরম্যান্স ট্রেড-অফ কিছু ইউজ কেসের জন্য চমৎকার কিন্তু অন্যদের জন্য আইডিয়াল নাও হতে পারে, তাই অন্যান্য ক্যাশ স্টোর ব্যবহার করা এখনও সহজ। ডিফল্টরূপে রেডিস বা Memcached-এর প্রয়োজনিয়ত সরিয়ে দিয়ে আপনাকে "No PaaS Required" মিশনে যেটি রেলস আছড়া রেখেছে সেটার এক ধাপ কাছাকাছি নিয়ে এসেছে।

Solid Queue: রেডিস-ফ্রি ব্যাকগ্রাউন্ড জব

আপনি সম্ভবত ইতিমধ্যে জানেন রেলস ActiveJob লাইব্রেরি ব্যবহার করে যাতে আপনার জন্য ব্যাকগ্রাউন্ড জব লিখতে এবং রান করা সহজ হয়। ক্যাশিংর মত, রেলস আপনাকে সিলেক্ট করতে দেয় যে কোনো ব্যাকএন্ড ActiveJob-কে পাওয়ার দেবে। অনেক Sidekiq বা Good Job পছন্দ করেন, কিন্তু আজকাল অধিকাংশ অপশনের দুটি সমস্যা আছে:

  • এগুলো আরেকটি ডিপেন্ডেন্সি ইমপোর্ট, ম্যানেজ, এবং সম্ভবত টাকা দিতে হয়
  • এগুলো আরেকটি সার্ভিসের মত রেডিসের ওপর নির্ভরশীল (যেটি আপনাকে হোস্ট, ম্যানেজ, এবং সম্ভবত টাকা দিতে হয়)

Solid Queue এই দুটোই সমাধান করতে চায় রেডিস ছাড়া ব্যাকগ্রাউন্ড জব ম্যানেজ করে। আপনি যদি Sidekiq বা অন্য কোনো রেডিস-ডিপেন্ডেন্ট কিউইং প্রোভাইডার ব্যবহার করতেন, তবে Solid Queue একটি অল্টারনেটিভ যা কমপ্লেক্সিটি কমিয়ে দেয় এবং হোস্টিং সহজ করে। Solid Cache-এর মত, Solid Queueও অ্যাপ্লিকেশনের ডাটাবেস ব্যবহার করে র‍্যামের বদলে ব্যাকগ্রাউন্ড জব ট্র্যাক রাখতে। এটি আরেকটি ফিচার যা রেলস এখন ডিফল্টরূপে প্রদান করছে ডিপেন্ডেন্সি কমাতে এবং প্রোডাকশন ডিপ্লয়মেন্ট সহজ করার জন্য।

Solid Cable: রেডিস-ফ্রি ওয়েব সকেট

রেলস Action Cable ব্যবহার করে যাতে ডেভেলপাররা রিয়েল-টাইম ফিচারের জন্য ওয়েব সকেট সহজে ব্যবহার করতে পারে। ঐতিহাসিকভাবে, এতে রেডিস দরকার। আপনি সম্ভবত অনুমান করলেন এটা কোথায় যাচ্ছে!

'Solid' থিমের সাথে মিলিয়ে, রেলস ৮ আরেকটি ডিফল্ট ডাটাবেস-ব্যাকড অ্যাডাপ্টার নিয়ে এলো। আপনাকে এটি ব্যবহার করতে হবে না, কিন্তু আপনি যদি ওয়েব সকেট ব্যবহার করতে চান এবং রেডিস কনফিগার এবং ম্যানেজ করার ঝামেলা এড়াতে চান, তবে এটি একটি চমৎকার ফার্স্ট-পার্টি অপশন। Solid Cache এবং Solid Queue-এর সাথে মিলে, Solid Cable রেলস অ্যাপ্লিকেশন PaaS ছাড়া শিপ করা আরও সহজ করে দেয় রেডিসের প্রয়োজনিয়ত সরিয়ে এবং ডাটাবেসের ওপর নির্ভর করে।

Kamal ২: সহজ ডিপ্লয়মেন্ট

রেলস ৮-এ পরবর্তী নতুন ফিচারটি Solid অ্যাডাপ্টারগুলো থেকে খুব আলাদা। তবুও, Kamal (বিশেষ করে Kamal ২) আপনার নিজস্ব হার্ডওয়্যার দিয়ে অ্যাপ শিপ করা আরও সহজ করে দেয়। কারণ Docker সফটওয়্যার মডুলারাইজ করা সহজ করে দিয়েছে, ল্যাঙ্গুয়েজ নির্বিশেষে Docker কন্টেইনার শিপ করার একটি সফটওয়্যার থাকা সম্পূর্ণ সেন্সibles।

আমার মতামতে, Kamal, বাকি রেলস ৮-এর সাথে জোড়া দিয়েও, অধিকাংশ প্ল্যাটফর্মের ডেভেলপার এক্সপেরিয়েন্সকে স্পর্শ করতে পারে না। তবুও, এটি আপনার নিজস্ব ওয়েব সার্ভারে সফটওয়্যার শিপ করা খুব বেশি সহজ করে দেয়, আপনি যদি রেলস ব্যবহার না করেও! এটি প্ল্যাটফর্মের সম্পূর্ণ প্রতিস্থাপন নাও হতে পারে, কিন্তু একবার আপনার ইনিশিয়াল সেটআপ কমপ্লিট হলে, kamal deploy রান করা আপনি নিজে ডিপ্লয়মেন্ট করার চেয়ে একটি বিশাল উন্নতি।

অথেন্টিকেশন জেনারেটর (Devise ছাড়া!)

আপনি যদি একটি রেলস অ্যাপ বানান যেটিতে ইউজার থাকে, তবে আপনাকে প্রায়শই অথেন্টিকেশন দরকার হবে। এখন পর্যন্ত, রেলস ফ্রেমওয়ার্কের অংশ হিসেবে অথেন্টিকেশন অন্তর্ভুক্ত করিনি। কমিউনিটিতে রেলস ডেভেলপারদের অথেন্টিকেশন লিখতে সাহায্য করার জন্য কয়েকটি চমৎকার সমাধান আছে, 그중 সবচেয়ে জনপ্রিয়টি Devise।

রেলস ৮ অথেন্টিকেশন জেনারেটর নিয়ে এলো। এটি একটি ফুল অথেন্টিকেশন সিস্টেম নয়, কিন্তু এটি Криটিক্যাল পার্টগুলো (যেমন সিকিউরিটি) সঠিকভাবে করার জন্য যথেষ্ট। ডেভেলপারের ওপর রয়েছে লগইন এবং ইউজার সাইন-আপ ফ্লো হ্যান্ডেল করার ভিউগুলো লিখা, কিন্তু জেনারেটরগুলো সেশন, পাসওয়ার্ড অথেন্টিকেশন, এবং এমনকি পাসওয়ার্ড ইমেইল হ্যান্ডেল করবে। DHH বলেছেন জেনারেটরে ভিউ ছাড়ার পছন্দ একটি ইন্টেনশনাল যেন সকল রেলস অ্যাপ এক জিনিসের মত না দেখে।

এই নতুন জেনারেটরগুলো সরাসরি অ্যাপ্লিকেশন শিপ করা সহজ করে না, কিন্তু এটি একটি ফার্স্ট-পার্টি সমাধান অফার করে একটি সাধারণ সমস্যার জন্য যা রেলস অনেক দিন ধরে মিস করছিল।

Propshaft: অ্যাসেট পাইপলাইনের জন্য

রেলস ৮-এ সবচেয়ে বড় (হুডের নিচে) পরিবর্তনগুলোতে একটি হলো Sprockets থেকে Propshaft-এ ডিফল্ট অ্যাসেট পাইপলাইনের জন্য 무ভ। রেলস এখনও Sprockets সাপোর্ট করে যদি আপনি চান বা দরকার হয়, কিন্তু নতুন রেলস ৮ অ্যাপ্লিকেশন ডিফল্টরূপে Propshaft ব্যবহার করবে।

Propshaft খুব opiniónated না বান্ডলিং বা মিনিফাই করার জন্য অ্যাসেট। ঠিক যেমন রেলস PaaS অপ্রয়োজনীয় করার চেষ্টা করছে, এটি জটিল বিল্ড পাইপলাইন অপ্রয়োজনীয় করার চেষ্টা করছে। রেলস ৮-এর অন্যান্য নতুন ডিফল্টগুলোর মত, আপনি পুরানো রেলস ভার্সনে Propshaft ব্যবহার করতে পারেন এবং রেলস ৮-এ এখনও Sprockets ব্যবহার করতে পারেন!

SQLite এবং রেলস

SQLite সঠিকভাবে রেলসের অংশ নয়, কিন্তু রেলস এই রিলিজে SQLite-এ আরও বেশি নির্ভর করছে। SQLite একটি সার্ভারলেস ডাটাবেস ইঞ্জিন, যা Postgres-এর চেয়ে সিম্পল। আপনার রেলস অ্যাপ্লিকেশন যদি SQLite ব্যবহার করে, তবে আপনাকে আপনার ওয়েব প্রসেস থেকে আলাদা একটি ডাটাবেস প্রসেস রান করতে হবে না। অবশ্যই, এটি রেলস ৮-এর মিশনের সাথে খুব ভালো মিলে যায়, ওয়েব অ্যাপ্লিকেশন শিপ করা সহজ করা।

রেলস ৮ ফার্স্ট-পার্টি সাপোর্ট সহ শিপ করছে SQLite-র জন্য, নিশ্চিত করে যে এটি আপনার ট্র্যাডিশনাল ডাটাবেস প্রয়োজন মেটাতে এবং নতুন ডাটাবেস-ব্যাকড Solid অ্যাডাপ্টারগুলো সাপোর্ট করতে যথেষ্ট শক্তিশালী।

রেলস ৮-এ সব নতুন জিনিস প্ল্যাটফর্মকে কম প্রয়োজনীয় बनाने সম্পর্কে

আপনি যদি একটি এক্সিস্টিং রেলস অ্যাপ রেলস ৮-এ আপগ্রেড করেন, তবে আপগ্রেড কমপ্লিট করার জন্য আপনাকে অনেক কিছু করতে হবে না। কয়েকটি জিনিস রিমুভ করা হয়েছে, অধিকাংশ Active Record-এ, যেগুলোর জন্য ইতিমধ্যে কিছু সময় ধরে ডিপ্রিকেশন নোটিশ ছিল। আপনি অবশ্যই "রেলস ৮-এ নতুন" সকল ডিফল্টের সুবিধা নিতে পারেন আপনার অ্যাপ্লিকেশন ডিপ্লয়মেন্ট সহজ করার জন্য, কিন্তু এটা অপশনাল।

রেলস ৮-এ সবচেয়ে বড় পরিবর্তনগুলো হচ্ছে নতুন রেলস অ্যাপগুলো জন্য! নতুন রেলস অ্যাপগুলো ডিফল্টরূপে ব্যবহার করবে Solid Queue ব্যাকগ্রাউন্ড জবের জন্য, Solid Cache ক্যাশিং-এর জন্য, Solid Cable ওয়েব সকেটের জন্য, Propshaft অ্যাসেট পাইপлайনের জন্য, এবং Kamal ২ ডিপ্লয়মেন্টের জন্য।

রেলস неদিন ধরে কমপ্লেক্সিটি কম্প্রেস করার মিশনে এবং আধুনিক ওয়েব অ্যাপ বানাতে একটি ফুল-ফিচার্ড ফ্রেমওয়ার্ক প্রদান করছে। রেলস ৮ ওয়েব অ্যাপ বানানো-র বাইরে যাচ্ছে ওয়েব অ্যাপ শিপ করা-তে একই সাথে এক্সিস্টিং অপশনসহ কম্প্যাটিবল রেখে।

আপনি রেলস ৮ ডিফল্টের সব, কিছু, বা কইচুই ব্যবহার করতে পারেন এবং প্ল্যাটফর্মও ব্যবহার করতে পারেন আপনি যদি সেই ডেভেলপার এক্সপেরিয়েন্স পছন্দ করেন। কিন্তু এই রিলিজ আপনাকে অপশন দিতে চায় প্ল্যাটফর্ম বাদ দিয়ে আপনার ইনফ্রাস্ট্রাকচারের বেশি ওনারশিপ নেওয়ার।

আপনি যদি এই আর্টিকেলটি পছন্দ করেন, তবে Honeybadger নিউজলেটার সাবস্ক্রাইব করুন আরও রুবি এবং রেলস নিউজ এবং টিউটোরিয়াল আপনার ইনবক্সে পেতে!


  1. Matplotlib আউটপুটে LaTeX আউটপুটের মতো একই ফন্ট পাওয়ার পদ্ধতি

  2. MongoDB শেল (mongo command) চালু করার পদ্ধতি

  3. CSS ::marker সিলেক্টর দিয়ে লিস্টের বুলেট রঙ পরিবর্তন করা

  4. C++-এ ডেসিমেল থেকে হেক্সাডেসিমেল কনভার্সন প্রোগ্রাম