রেলের ব্যাটারি-অন্তর্ভুক্ত পদ্ধতি এটির অন্যতম সেরা সম্পদ। অন্য কোনো কাঠামো রেলের জেনারেটরের কারণে অন্তত আংশিকভাবে আপনার অ্যাপ্লিকেশনকে দ্রুত মাটিতে নামিয়ে আনতে সহজ করে না।
আপনি যেকোন সময়ের জন্য রেল ব্যবহার করে থাকলে, আপনি জেনারেটর জুড়ে এসেছেন। একটি নতুন অ্যাপ্লিকেশন তৈরি করতে হবে? rails new চালান . একগুচ্ছ নতুন মডেল এবং ভিউ স্ক্যাফোল্ড করতে হবে? rails generate scaffold চালান . আপনাকে দ্রুত শুরু করতে বা আপনার কর্মপ্রবাহকে স্ট্রীমলাইন করতে সাহায্য করার জন্য আরও কয়েক ডজন উপলব্ধ রয়েছে৷
কিন্তু কখনও কখনও, জেনারেটর ব্যবহার করা যথেষ্ট নয়। আপনি এই কমান্ডগুলির আচরণ কাস্টমাইজ করতে বা এমনকি আপনার নিজস্ব তৈরি করতে চাইতে পারেন। এই নিবন্ধে, আমরা জেনারেটরগুলিকে ঘনিষ্ঠভাবে দেখব - বিশেষ করে, কীভাবে টেমপ্লেট ব্যবহার করে আপনার নিজস্ব কাস্টম রেল অ্যাপ্লিকেশন তৈরি করবেন৷
চলুন শুরু করা যাক!
রেল জেনারেটর কি?
জেনারেটর ফাংশনগুলির সাথে বিভ্রান্ত না হওয়ার জন্য (যা আপনি পাইথন বা জাভাস্ক্রিপ্ট থেকে পরিচিত হতে পারেন), রেলজেনারেটরগুলি হল কাস্টম থর কমান্ড যেগুলি ভালভাবে তৈরি করা জিনিসগুলিতে ফোকাস করে৷
উদাহরণ প্রচুর আছে। আপনি সম্ভবত মডেল জেনারেটরের সাথে পরিচিত হবেন (rails generate model ) নতুন ActiveRecord মডেল বা মাইগ্রেশন জেনারেটর তৈরি করার জন্য (rails generate migration ) নতুন মাইগ্রেশন তৈরি করার জন্য। rails generate generatorও আছে যা — আপনি অনুমান করেছেন — একটি নতুন জেনারেটর তৈরি করে!
জেনারেটর একে অপরকে কল করতে পারে — উদাহরণস্বরূপ, rails scaffold অনেক অন্যান্য জেনারেটরকে কল করবে — এবং ফাইলগুলি তৈরি বা সংশোধন করার, রত্ন ইনস্টল করার, নির্দিষ্ট রেকের কাজ চালানো এবং আরও অনেক কিছু করার পদ্ধতি প্রদান করবে। এটি কীভাবে কাজ করে তা বোঝার জন্য আসুন একটি সাধারণ মডেল স্পেক জেনারেটর তৈরি করি।
রুবি অন রেলে আপনার নিজস্ব জেনারেটর তৈরি করা
নিম্নলিখিত চালান:
এটি /lib/generators/model_spec-এ বেশ কিছু নতুন ফাইল তৈরি করবে . আমরা model_spec_generator.rb পরিবর্তন করতে পারি lib/generators/model_spec/ ফোল্ডারে সঠিক ডিরেক্টরিতে একটি মডেল বিশেষ ফাইল তৈরি করতে:
template কমান্ড lib/generators/model_spec/templates-এ একটি টেমপ্লেট ফাইল খুঁজবে ডিরেক্টরি এবং নির্দিষ্ট অবস্থানে রেন্ডারিট — spec/models ডিরেক্টরি কমান্ডটি টেমপ্লেট ফাইলে পাওয়া ERB-স্টাইল ভেরিয়েবলকে প্রতিস্থাপন করবে।
source_root সেট করে , আমরা আমাদের জেনারেটরকে জানাই যে এটি রেফারেন্সযুক্ত টেমপ্লেট ফাইলগুলি কোথায় খুঁজে পেতে পারে। টেমপ্লেটmodel_spec.rb lib/generators/model_spec/templates/ ফোল্ডারে এই মত দেখতে পারে:
একবার আপনি সেই ফাইলটি তৈরি করলে, আপনি একটি নতুন বিশেষ ফাইল তৈরি করতে জেনারেটর চালাতে পারেন৷
৷অনেক রত্ন এই ধরনের জেনারেটরের সাথে জাহাজে করে। আসলে, আমরা জেনারেটর Rspec জাহাজের একটি সরলীকৃত সংস্করণ তৈরি করেছি। FactoryBot-এর কারখানার জন্য একটি জেনারেটর রয়েছে৷ আরও অনেক উদাহরণ রয়েছে৷
৷
বিভিন্ন রত্নগুলির জেনারেটরগুলি আমাদের তৈরি করা থেকে আরও পরিশীলিত৷ আমরা আমাদের জেনারেটরকে আর্গুমেন্ট নিতে বা এমনকি বিদ্যমান জেনারেটর যেমন rails scaffold এর সাথে যুক্ত করতে পারি। . আপনি আরও জানতে চাইলে রেল জেনারেটর ডকুমেন্টেশন পড়ুন।
তাই জেনারেটরদের একটি বিদ্যমান অ্যাপ্লিকেশনে আপনার কর্মপ্রবাহকে সহজ করার সম্ভাবনা রয়েছে। কিন্তু আমরা কি একটি নতুন অ্যাপ্লিকেশন সেট আপ কাস্টমাইজ করতে জেনারেটর ব্যবহার করতে পারি?
টেমপ্লেট লিখুন!
রুবি অন রেলে টেমপ্লেট
নাম অনুসারে, টেমপ্লেটগুলি হল আপনার অ্যাপ্লিকেশন সেটআপ কাস্টমাইজ করার জন্য ফাইল৷ আমরা পূর্বে আলোচনা করা টেমপ্লেট ফাইলগুলির সাথে এগুলিকে বিভ্রান্ত করবেন না! হুডের অধীনে, এগুলি একটি নির্দিষ্ট উদ্দেশ্যের সাথে জেনারেটর, যেমনটি টেমপ্লেট API দ্বারা প্রমাণিত৷ যদিও জেনারেটরগুলির সাথে হুবহু অভিন্ন নয়, তারা খুব একই রকম৷
৷আপনার যদি একটি বিদ্যমান টেমপ্লেট ফাইল থাকে, তাহলে আপনি এটি এভাবে ব্যবহার করতে পারেন:
একটি স্থানীয় ফাইল নির্দিষ্ট করার পরিবর্তে, আপনি একটি URLও নির্দিষ্ট করতে পারেন৷ এটি বিশেষভাবে উপযোগী কারণ এটি আপনাকে অ্যাপ্লিকেশন টেমপ্লেট শেয়ার করতে দেয়।
rails new চালানোর সময় আপনি টেমপ্লেট ব্যবহার করে সীমাবদ্ধ নন হয় আপনি যদি ইতিমধ্যেই একটি অ্যাপ সেট আপ করে থাকেন, তাহলে আপনি সম্পাদন করে টেমপ্লেট প্রয়োগ করতে পারেন:
টেমপ্লেট অত্যন্ত দরকারী হতে পারে. কে না চায় স্বয়ংক্রিয়ভাবে একই জোড়া রত্ন যোগ করা এবং প্রতিবার একটি নতুন অ্যাপ তৈরি করার সময় একই কনফিগারেশন পরিবর্তন করা? আপনার নিজের অ্যাপ্লিকেশান টেমপ্লেট তৈরি করা দুর্দান্ত মজার — এমনকি যদি এটি দীর্ঘমেয়াদে অনেক সময় বাঁচায় না৷
রেলে আপনার নিজস্ব টেমপ্লেট তৈরি করা
আমরা এখন জেনারেটর এবং কিভাবে টেমপ্লেট ব্যবহার করতে হয় সে সম্পর্কে জানি। কিছু সেটআপ ধাপ স্বয়ংক্রিয় করতে একটি সহজ অ্যাপ্লিকেশন টেমপ্লেট তৈরি করা যাক।
আপনি কীভাবে আপনার Rails অ্যাপ সেট আপ করেন তা ব্যক্তিগত পছন্দের উপর নির্ভর করে, কিন্তু এখানে একটি উদাহরণ:
- ডোটেনভ রত্ন ইনস্টল করুন।
- একটি
.env.developmentতৈরি করুন উন্নয়ন পরিবেশের জন্য ফাইল। - এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করার জন্য ডাটাবেস কনফিগারেশন ফাইলকে মানিয়ে নিন।
- ঐচ্ছিকভাবে Rspec ইনস্টল এবং সেট আপ করুন।
আসুন একটি স্থানীয় ফাইল তৈরি করি — mytemplate.rb — এবং dotenv যোগ করুন gem ব্যবহার করে আদেশ।
যেহেতু আমরা এইমাত্র ডটেনভ রত্ন যোগ করেছি, চলুন একটি .env.developmentও তৈরি করি আমাদের ডাটাবেস কনফিগারেশন ধারণ করার জন্য ফাইল।
আপনি create_file ব্যবহার করে নির্দিষ্ট সামগ্রী সহ একটি নতুন ফাইল তৈরি করতে পারেন৷ . আপনি টেমপ্লেট বা জেনারেটর ডকুমেন্টেশনে এটি পাবেন না, কারণ পদ্ধতিটি Thor দ্বারা সরবরাহ করা হয়েছে। এছাড়াও আপনি উপনাম file জুড়ে আসতে পারেন . অ্যাপ্লিকেশন টেমপ্লেটগুলি Rails::Generators::AppGenerator এর প্রসঙ্গে মূল্যায়ন করা হয় , এবং ঠিক সেখানেই file উপনাম সংজ্ঞায়িত করা হয়েছে।
app_name ভেরিয়েবলে rails new এর প্রথম আর্গুমেন্ট রয়েছে . এই ভেরিয়েবলটি ব্যবহার করে, আমরা নিশ্চিত করতে পারি যে আমাদের কনফিগার ফাইলটি জেনারেট করা অ্যাপ্লিকেশনের সাথে মেলে।
এর পরে, ডাটাবেসের সাথে সংযোগ করতে আমাদের পরিবেশ ভেরিয়েবল ব্যবহার করা যাক। আমরা সম্পূর্ণ config/database.yml ওভাররাইট করতে পারি create_file ব্যবহার করে কমান্ড, কিন্তু এর পরিবর্তে এটি পরিবর্তন করা যাক inject_into_file ব্যবহার করে .
আমরা after দিয়ে স্ট্রিং বা রেজেক্স উভয়ই ব্যবহার করতে পারি কন্টেন্ট কোথায় ইনজেক্ট করতে হবে তা উল্লেখ করার জন্য যুক্তি।
অবশ্যই, এই ধরনের কনফিগারেশন ব্যবহার করা শুধুমাত্র তখনই বোধগম্য হয় যখন একজন ব্যবহারকারী SQLite দিয়ে কোনো অ্যাপ্লিকেশন তৈরি না করেন। আপনি options ব্যবহার করে নির্দিষ্ট আর্গুমেন্টের উপস্থিতি পরীক্ষা করতে পারেন। পরিবর্তনশীল কোন বিকল্পগুলি উপলব্ধ তা দেখতে আপনি রেলের অ্যাপ জেনারেটরের উত্স কোডটি পড়েন সবচেয়ে ভাল৷
শেষ কিন্তু অন্তত নয়, আসুন ব্যবহারকারীরা চাইলে Rspec ইনস্টল করার অনুমতি দিই। ব্যবহারকারীর ইনপুট নেওয়া এবং ইন্টারেক্টিভ টেমপ্লেট তৈরি করার জন্য বিভিন্ন পদ্ধতি রয়েছে। yes? পদ্ধতি নিশ্চিতকরণের জন্য ব্যবহারকারীকে জিজ্ঞাসা করে:
আমরা ইতিমধ্যেই gem জানি পদ্ধতি, কিন্তু generate এবং after_bundle নতুন।
আগেই উল্লেখ করা হয়েছে, Rspec তার নিজস্ব জেনারেটর যোগ করে, এবং আপনি সরাসরি আপনার টেমপ্লেট থেকে এই জেনারেটরগুলিকে (অথবা অন্য যে কোনও বিষয়ের জন্য) কল করতে পারেন। কিন্তু একটি ধরা আছে — gem দিয়ে নির্দিষ্ট রত্ন পদ্ধতি শুধুমাত্র টেমপ্লেটের শেষে ইনস্টল করা হয়। generate কল করা হচ্ছে এই ধরনের রত্ন দ্বারা সরবরাহ করা একটি জেনারেটর ব্যর্থ হবে — এই কারণেই আপনাকে after_bundle দিয়ে একটি কলব্যাক হিসাবে কমান্ড নিবন্ধন করা উচিত। .
দ্রষ্টব্য :আমরা শেষ করার আগে, ফাইল তৈরি বা পরিবর্তন করার বিষয়ে একটি দ্রুত শব্দ। আমরা create_file ব্যবহার করেছি এবং inject_into_file , কিন্তু অন্যান্য অনেক অপশন আছে. আপনি copy_file দেখতে পারেন অথবা template বিভিন্ন টেমপ্লেট পড়ার সময়। আমি জিনিসগুলি সহজ রাখতে এখানে তাদের উল্লেখ করিনি। আপনি যদি আরও উন্নত টেমপ্লেট তৈরি করতে চান, তাহলে আপনার জানা উচিত যে ফাইলগুলির সাথে কাজ করার জন্য এই অন্যান্য পদ্ধতিগুলি বিদ্যমান৷
ফলাফল:রেলের চূড়ান্ত টেমপ্লেট
চূড়ান্ত টেমপ্লেটটি এইরকম হওয়া উচিত:
আপনি এই নির্দিষ্ট টেমপ্লেটটি চালিয়ে পরীক্ষা করতে পারেন:
অথবা:
কাস্টম ডাটাবেস কনফিগারেশনের সুবিধা নিতে।
উল্লিখিত হিসাবে, এই ফাইলটি একটি GitHub সারাংশ হিসাবে ভাগ করার জন্য পুরোপুরি উপযুক্ত। আপনার প্রয়োজন অনুসারে এটিকে মানিয়ে নিন, এটি আপলোড করুন এবং তারপরে আপনার সহকর্মীদের, বন্ধুদের এবং আপনার কাস্টম অ্যাপ টেমপ্লেটে আগ্রহী অন্য কারো সাথে শেয়ার করুন 😉৷
রেল জেনারেটর এবং টেমপ্লেট সম্পর্কে আরও জানুন
বলাই বাহুল্য, আমরা এখানে পৃষ্ঠটি স্ক্র্যাচ করেছি।
প্রত্যেকেরই রেল অ্যাপগুলি লেখার এবং বিকাশ করার জন্য আলাদা পছন্দ রয়েছে, তাই সেখানে অসংখ্য জেনারেটর এবং অ্যাপ্লিকেশন টেমপ্লেট রয়েছে৷ আপনি তাদের সম্পর্কে পড়ে নির্দিষ্ট কাস্টমাইজেশন করার বিষয়ে অনেক কিছু শিখতে পারেন। আমি সুপারিশ করছি ChrisOliver's Jumpstart এবং RailsBytes, যার শেষোক্তটি টেমপ্লেটের একটি সম্প্রদায়-নির্ভর সংগ্রহ।
এছাড়াও থটবট এর সাসপেন্ডার রয়েছে, যা আমাকে রেল জেনারেটর এবং টেমপ্লেটগুলির গভীরে খনন করতে অনুপ্রাণিত করেছে। এমনকি আমি আমার নিজের অ্যাপ্লিকেশন টেমপ্লেট লিখেছি — স্কিনেঞ্জেপেলিন — যা আপ-টু-ডেট না হলেও কিছু অনুপ্রেরণা দিতে পারে।
র্যাপ আপ:রেল জেনারেটর এবং টেমপ্লেটগুলিতে রুবি দিয়ে শুরু করুন
এই পোস্টে, আমরা রেল জেনারেটরগুলির মূল বিষয়গুলি এবং সেগুলি কীভাবে ব্যবহার করা হয় তা দেখেছি। আমরা আমাদের নিজস্ব জেনারেটর তৈরি করেছি নতুন মডেলের স্পেস লেখা সহজ করার জন্য।
তারপরে আমরা টেমপ্লেটগুলি অনুসন্ধান করেছি এবং শিখেছি কিভাবে আপনি আপনার অ্যাপ্লিকেশন সেটআপ কাস্টমাইজ করতে একটি সাধারণ টেমপ্লেট তৈরি করতে পারেন৷ এটি কিছুটা কাজ হতে পারে, তবে বেশ ফলপ্রসূও হতে পারে। যদি আপনার নিজের টেমপ্লেটগুলি লেখা আপনার জন্য না হয়, তাহলে বেছে নেওয়ার জন্য অনলাইনে বিদ্যমান অনেকগুলি রয়েছে!
শুভ টেমপ্লেটিং!
পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!
Hans-Jörg Schnedlitz
আমাদের অতিথি লেখক হ্যান্স ভিয়েনা, অস্ট্রিয়ার একজন রেল ইঞ্জিনিয়ার। তিনি তার বেশিরভাগ সময় কোডিং বা কোডিং সম্পর্কে পড়ার জন্য ব্যয় করেন এবং কখনও কখনও তার ব্লগে এটি সম্পর্কে লেখেন! তিনি যখন স্ক্রিনের সামনে বসে থাকবেন না, তখন সম্ভবত আপনি তাকে বাইরে পাহাড়ে আরোহণ করে খুঁজে পাবেন।
Hans-Jörg Schnedlitz
এর সমস্ত নিবন্ধ