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

রুবি অন রেল 7.1:আংশিকভাবে কঠোর স্থানীয় ভেরিয়েবল আয়ত্ত করা

রেলের আংশিকগুলি বছরের পর বছর ধরে আছে, কিন্তু সেগুলি ক্লাঙ্কি হতে পারে কারণ এগুলি কোনও ব্যাকিং অবজেক্ট স্ট্রাকচার ছাড়াই কেবল ERB স্নিপেট৷

সম্প্রতি, ভিউ কম্পোনেন্ট এবং ফ্লেক্সের মতো লাইব্রেরিগুলি টেমপ্লেটগুলিতে আরও শব্দার্থিক কাঠামো যুক্ত করে ভিউ স্তর উন্নত করার চেষ্টা করেছে। এগুলি দুর্দান্ত লাইব্রেরি এবং আমি ব্যক্তিগতভাবে ViewComponent এর জন্য পৌঁছাই প্রায় প্রতিটি প্রকল্পে আমি কাজ করি। এটি বলেছে, আমি এখনও অনুভব করি যে নম্র রেল আংশিক এখনও অনেক ব্যবহারের ক্ষেত্রে দুর্দান্ত কাজ করে৷

Rails টিম সর্বদা তার অফার উন্নত করার চেষ্টা করে, তাই আসুন Rails 7.1-এ চালু করা একটি নতুন বৈশিষ্ট্য দেখুন:কঠোর স্থানীয়রা!

রেল আংশিক এবং স্থানীয় ভেরিয়েবল

আমরা রেলের আংশিকগুলিতে নির্বিচারে স্থানীয় ভেরিয়েবলগুলি পাস করতে পারি এবং সেগুলি ব্যবহারের জন্য জাদুকরীভাবে উপলব্ধ৷

 

এটি আদর্শ নয়, কারণ মার্কআপের একটি বড় ব্লক থাকলে কোন ভেরিয়েবল আংশিক গ্রহণ করে তা নিশ্চিত করা কঠিন। এছাড়াও, যেহেতু ভেরিয়েবলগুলি গতিশীলভাবে তৈরি করা হয়েছে, একটি অনুপস্থিত ভেরিয়েবল nil ফেরত দেবে না কিন্তু একটি ত্রুটি সৃষ্টি করবে৷

ধরা যাক icon উপরের আংশিকটিতে ঐচ্ছিক ছিল:

 

আমরা এটিকে এভাবে রেন্ডার করি:

 

এটি একটি ActionView::Template::Error বাড়াবে , undefined local variable or method 'icon' for #<ActionView::Base:0x00000000023078> বার্তা সহ .

সত্য যে icon ঐচ্ছিক তা পাঠকের কাছেও স্পষ্ট নয়। Rails 7.1 পর্যন্ত, সমাধান ছিল local_assigns পরিদর্শন করা হ্যাশ যাতে সমস্ত ইনজেকশন করা স্থানীয় ভেরিয়েবল থাকে।

 

এটি উপরের ত্রুটিটি ঠিক করে কারণ icon ভেরিয়েবল এখন সবসময় সেট করা হয়।

রেল 7.1 কঠোর স্থানীয়দের ধারণার সাথে আংশিকভাবে স্থানীয় ভেরিয়েবলের ত্রুটিগুলি সমাধান করার চেষ্টা করে .

রেলের মধ্যে কঠোর স্থানীয়রা কি?

Rails 7.1 থেকে শুরু করে, আমরা আংশিকগুলির শীর্ষে একটি ম্যাজিক মন্তব্য লিখতে পারি, যা এটি গ্রহণ করে স্থানীয় ভেরিয়েবল এবং তাদের জন্য যেকোনো ডিফল্ট মান নির্ধারণ করে৷

 

রেলগুলি এই মন্তব্যটি পার্স করে এবং আংশিকভাবে সংজ্ঞায়িত ভেরিয়েবল সেট করে। এখন এটি একটি পাঠকের কাছে স্পষ্টতই সুস্পষ্ট যা আংশিক গ্রহণ এবং যেকোনো ডিফল্ট মান পরিবর্তন করে।

আংশিক এখনও উপরে দেখানো হিসাবে রেন্ডার করা উচিত. title বাদ দিয়ে চেষ্টা করুন কল সাইট থেকে পরিবর্তনশীল এবং দেখুন কি হয়:

 

আপনি একটি ArgumentError পাবেন missing local: :title বার্তা সহ :আগের চেয়ে আরও বর্ণনামূলক ত্রুটি বার্তা!

কখন কঠোর স্থানীয় ব্যবহার করবেন

কঠোর স্থানীয়রা নির্ভুল হতে পারে, তাই তাদের ব্যবহার করা সবসময় ভালো ধারণা নয়, বিশেষ করে লিগ্যাসি অ্যাপে।

আসুন একটি ব্যবহারের ক্ষেত্রে নেওয়া যাক যা কঠোর স্থানীয়দের জন্য উপযুক্ত। বলুন আমাদের কাছে একটি আংশিক আছে যা একটি কার্ডে ব্যবহারকারীর বিবরণ দেখাচ্ছে৷ , কিন্তু শুধুমাত্র প্রশাসকরাই দেখতে পারবেন কখন তারা শেষবার সাইন ইন করেছেন:

 

এই আংশিকটি বেশ কয়েকটি ভেরিয়েবল নেয় এবং একটি ঐচ্ছিক পরিবর্তনশীল থাকে, এটি কঠোর স্থানীয়দের জন্য একটি নিখুঁত ক্ষেত্রে তৈরি করে। ফাইলে নিম্নলিখিত ম্যাজিক মন্তব্য যোগ করা হলে তা স্কিম করাকে উল্লেখযোগ্যভাবে সহজ করে তোলে:

 

একটি মডেলের সংশ্লিষ্ট আংশিক ক্ষেত্রে (যেমন posts/_post.html.erb ), এটা মোটামুটি স্পষ্ট যে এই ধরনের আংশিক একটি একক post গ্রহণ করে পরিবর্তনশীল আমি মনে করি না যে কঠোর স্থানীয়রা এই ক্ষেত্রের জন্য একটি ভাল ধারণা।

কঠোর লোকাল গোটচাস

সতর্ক থাকার জন্য কয়েকটি গোটচা আছে, যে কারণে আমি বোর্ড জুড়ে কঠোর স্থানীয়দের ব্যবহার করার পরামর্শ দিই না।

অস্পষ্টভাবে একটি সংগ্রহ রেন্ডার করা

যখন নিহিতভাবে একটি সংগ্রহ রেন্ডার করা হয়:

 

রেলগুলি _post ইনজেক্ট করে post ছাড়াও দুটি ভেরিয়েবল সহ আংশিক পরিবর্তনশীল Rails 7.1.2 এর আগে, ত্রুটি প্রতিরোধ করার জন্য এগুলিকে ম্যানুয়ালি সংজ্ঞায়িত করা প্রয়োজন:

 

এই সমস্যাটি Rails 7.1.2 এ স্থির করা হয়েছে এবং এই ভেরিয়েবলগুলি এখন ঐচ্ছিক (কিন্তু প্রয়োজন হলে এগুলোর অস্তিত্ব আছে জেনে রাখা ভালো)!

ActionCable এর মাধ্যমে সম্প্রচার করা হচ্ছে

একটি ActiveRecord কলব্যাক থেকে ActionCable এর উপর আংশিক সম্প্রচার করার সময়:

 

আপনাকে একটি request_id উল্লেখ করতে হবে স্থানীয় পরিবর্তনশীল ডিফল্ট করে nil , যেহেতু এটি রেল দ্বারা হুডের নিচে ব্যবহৃত হয়।

 

এটি না করার ফলে কলব্যাক ট্রিগার হলে একটি ত্রুটি দেখা দেয়৷

আর এটাই আমাদের হুইসেল-স্টপ ট্যুর হয়ে গেছে!

মনে রাখতে কিছু জিনিস

বিদ্যমান আংশিকগুলিতে কঠোর স্থানীয়দের যোগ করা একটি সব-বা-কিছুই একটি প্রদত্ত ফাইলের জন্য প্রস্তাব। আমরা ক্রমবর্ধমানভাবে একটি যাদু মন্তব্যে ভেরিয়েবল যোগ করতে পারি না কারণ আমরা সেগুলি খুঁজে পাই। উপরের গোটচাসে যেমন দেখানো হয়েছে, ম্যাজিক কমেন্টে যে সমস্ত ভেরিয়েবল ঘোষণা করতে হবে তা নিশ্চিত করা কঠিন হতে পারে।

কঠোর স্থানীয়দের সাথে কোড সম্পর্কে যুক্তি করা কতটা সহজ তা বিবেচনা করে, আমি মনে করি তারা নতুন অ্যাপগুলিতে ব্যাপকভাবে ব্যবহার করা মূল্যবান (এবং উত্তরাধিকারী অ্যাপগুলিতে ক্রমান্বয়ে পূর্ববর্তীভাবে যুক্ত করা)।

লিগ্যাসি অ্যাপগুলিতে আপনার টেস্ট স্যুটটি সেই অংশগুলিকে কভার করে যা আপনি কঠোর স্থানীয়দের যোগ করেন তা নিশ্চিত করা গুরুত্বপূর্ণ। একটি বাদ দিলে একটি ব্যতিক্রম ঘটবে, তাই আপনাকে নিশ্চিত হতে হবে যে আপনি পরিবর্তনগুলি স্থাপন করার আগে সমস্ত ব্যবহারের ক্ষেত্রে পরীক্ষা করেছেন৷

যদিও আমি ম্যাজিক মন্তব্যের বড় ভক্ত নই পদ্ধতি (যেমন আমি বিশ্বাস করি মন্তব্যের কার্যকারিতা থাকা উচিত নয়), আমি মনে করি কঠোর স্থানীয়রা রেলের জন্য একটি দুর্দান্ত সংযোজন। স্থানীয়দের একটি আংশিক বরাদ্দ করা সর্বদাই স্থিরভাবে করা হয়েছে এবং এটি এটিকে সহজ করে তোলে। শুধু গোটচা থেকে সাবধান!

র্যাপিং আপ

এই পোস্টে, আমরা রেল 7.1-এ কঠোর স্থানীয়দের দ্রুত দেখেছি। কঠোর লোকাল এবং কিছু গোটচা ব্যবহার করার আগে আমরা দেখেছি কিভাবে আংশিক এবং স্থানীয় ভেরিয়েবল কাজ করে।

শুভ কোডিং!

পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!

রুবি অন রেল 7.1:আংশিকভাবে কঠোর স্থানীয় ভেরিয়েবল আয়ত্ত করা

আয়ুষ নেওয়াতিয়া

অতিথি লেখক আয়ুশ একজন ফ্রিল্যান্স রুবি এবং রেল ডেভেলপার। তিনি The Rails and Hotwire Codex এর লেখক এবং Bridgetown কোর টিমের অংশ। এছাড়াও তিনি Scattergun নামে একটি গোপনীয়তা কেন্দ্রিক মেলিং লিস্ট অ্যাপ চালান।

আয়ুশ নেওয়াতিয়ার সমস্ত নিবন্ধ


  1. কোন ব্রাউজার HTML5 ইতিহাস API সমর্থন করে?

  2. একটি বাইনারি গাছে C++ পেয়ারওয়াইজ লিফ নোড অদলবদল করুন

  3. HTML DOM ট্রানজিশন ইভেন্ট অতিবাহিত সময়ের সম্পত্তি

  4. ট্রিক্স এবং টার্বো ফ্রেম ব্যবহার করে রেলে একটি ডায়নামিক টেবিল এডিটর তৈরি করুন