কম্পিউটার

7 দুর্দান্ত রুবি রত্ন বেশিরভাগ লোকেরা শুনেননি

আপনি আপনার রেল প্রকল্পগুলিতে ব্যবহার করতে পারেন এমন সেরা রুবি রত্নগুলি কী কী?

আপনি এই নিবন্ধে এটিই আবিষ্কার করবেন!

আমি আপনাকে 7টি রত্ন দিতে যাচ্ছি, কিন্তু একটি পুরানো রত্ন নয় যা আপনি এক মিলিয়ন বার দেখেছেন , আমি আপনাদের সাথে এমন কিছু রত্ন শেয়ার করতে যাচ্ছি যেগুলো খুবই সহায়ক, কিন্তু খুব কম পরিচিত।

কিন্তু আমরা সেটা করার আগে...

একটি সতর্কতা৷

আমি এমন ডেভেলপারদের দেখেছি যারা প্রায় সবকিছুর জন্য রত্ন নিয়ে আসে।

যদি দূর থেকে মনে হয় এটা সহায়ক হতে পারে।

সেই রত্নটি তাদের সমস্যা সমাধান করে কিনা, যদি এটি সর্বোত্তম বিকল্প হয়, ভালভাবে রক্ষণাবেক্ষণ করা এবং নথিভুক্ত করা ইত্যাদি চিন্তা করার জন্য এক মুহূর্ত সময় না নিয়ে।

এটা একটা ভুল।

কেন?

কারণ আপনার প্রজেক্ট যত বেশি জিনিসের উপর নির্ভর করে, জিনিসগুলি পরিবর্তিত হলে এটি ভেঙে যাওয়ার সম্ভাবনা তত বেশি।

এবং সবকিছু সব সময় পরিবর্তিত হয়।

নতুন রেল সংস্করণ, নতুন রুবি সংস্করণ, নতুন বৈশিষ্ট্য, ইত্যাদি।

এই বলে…

রত্নগুলি আপনাকে অনেক কাজ বাঁচাতে পারে, আপনাকে আপনার কোড পরিষ্কার করতে সাহায্য করতে পারে এবং নিরাপত্তা সমস্যাগুলি এড়াতে পারে, তাই বুদ্ধিমানের সাথে ব্যবহার করুন!

এখন :

আসুন তালিকায় প্রবেশ করি।

1. আপনার কোড পরিষ্কার রাখতে মৃত রুট খুঁজুন

আপনার রেল অ্যাপ্লিকেশন বৃদ্ধির সাথে সাথে আপনি আরও এবং আরও বেশি রুট সংগ্রহ করবেন।

আপনি কোড পরিবর্তন করবেন এবং কিছু এই রুটগুলি পুরানো হয়ে যাবে .

আর প্রয়োজন নেই...

কিন্তু তারা সেখানে থাকবে, আপনার config/routes.rb এ , এটি পরিচালনা করা কঠিন করে তোলে।

কোন রুটগুলি মুছতে হবে তা আপনি কীভাবে খুঁজে পাবেন?

traceroute নামে একটি রত্ন আছে .

এটি আপনার রুটগুলি লোড করে এবং আপনার সংজ্ঞায়িত কন্ট্রোলার অ্যাকশনগুলির সাথে তাদের তুলনা করে৷

কিন্তু এই মুহূর্তে এর দুটি সীমাবদ্ধতা রয়েছে :

  1. এটি Rails 6 এর সাথে কাজ করে না
  2. এটি অন্তর্নিহিত নিয়ামক ক্রিয়া সনাক্ত করে না

আমি Rails 6 সমর্থন যোগ করার জন্য একটি পুল অনুরোধ পাঠিয়েছি, কিন্তু আমি আমার নিজস্ব সংস্করণ নিয়ে এসেছি যাতে এই সীমাবদ্ধতা নেই৷

আপনি এটি এখানে খুঁজে পেতে পারেন।

2. আপনার মাইগ্রেশনকে নিরাপদ করুন যাতে আপনি সমস্যা এড়াতে পারেন

ভুল হলে রেল মাইগ্রেশন অনেক সমস্যার সৃষ্টি করতে পারে।

উদাহরণস্বরূপ :

একটি কলাম সরানো সমস্যার কারণ হতে পারে কারণ রেলের কাছে কলামের ক্যাশে রয়েছে এবং মাইগ্রেশন চালানোর ফলে এই ক্যাশে রিসেট হয় না।

আরেকটি উদাহরণ :

আপনি যদি একটি সূচী যোগ করেন এবং আপনি PostgreSQL চালান তাহলে অপারেশন সম্পূর্ণ না হওয়া পর্যন্ত পুরো টেবিলটি লক হয়ে যাবে।

আপনার ব্যবহারকারীদের জন্য ভাল নয়৷

আপনার অ্যাপ্লিকেশন লক করা টেবিলের সাথে কাজ করার প্রয়োজন এমন অনুরোধের উত্তর দিতে সক্ষম হবে না।

সুসংবাদ?

আপনাকে এই সব কিছু মনে রাখতে হবে না।

strong_migrations এর সাহায্যে রত্ন, আপনি যখন এই অনিরাপদ স্থানান্তরগুলির মধ্যে একটি এটি উত্পাদন করার আগে তা জানতে পারবেন৷

3. অনিরাপদ লেনদেন প্রতিরোধ করুন

একটি রেল লেনদেন একটি "সব বা কিছুই" অপারেশন বলে মনে করা হয়৷

এটা এরকম দেখাচ্ছে :

Book.transaction do # ...end

কিন্তু আপনি যদি এমন কিছু করেন যা transaction এর বাইরে নিয়ন্ত্রণ, যেমন একটি ফাইলে লেখা, বা একটি API অনুরোধ করা, তাহলে এই "সব বা কিছুই" প্রভাব আর সত্য নয়৷

আপনি কল্পনা করতে পারেন, এটি সব ধরণের সমস্যার দিকে পরিচালিত করে।

সমাধান কি?

খুব উচ্চ-প্রযুক্তি নয়, আসলে, শুধু "পার্শ্বপ্রতিক্রিয়া" এড়িয়ে চলুন, বা লেনদেনের "বাইরের বিশ্ব"কে প্রভাবিত করে এমন কিছু করা।

আইসোলেটর রত্ন এতে সাহায্য করতে পারে।

এটি আপনার সমস্ত লেনদেন নিরাপদ কিনা তা নিশ্চিত করতে অডিট করে।

আপনাকে যা করতে হবে তা হল রত্নটি ইনস্টল করুন, তারপর যখন এটি একটি খারাপ transaction সনাক্ত করে এটি একটি ব্যতিক্রম বাড়াবে।

একবার চেষ্টা করে দেখুন!

4. আপনার ধীরগতির পরীক্ষাগুলি খুঁজুন এবং সেগুলিকে দ্রুত করুন

ধীরগতির পরীক্ষা কোন মজার নয়।

কিন্তু আপনার পরীক্ষাগুলি কেন ধীর হয় তা খুঁজে বের করতে আপনাকে সাহায্য করার জন্য সরঞ্জাম রয়েছে যাতে আপনি সেগুলি ঠিক করতে পারেন!

এই টুলগুলির মধ্যে একটি হল test-prof এর সমন্বয় + ruby-prof .

এটি কীভাবে ব্যবহার করবেন তা এখানে রয়েছে :

TEST_RUBY_PROF=1 রেক

আউটপুট :

%self total self ওয়েট চাইল্ড কলের নাম 43.21 2.001 2.001 0.000 0.000 1 Kernel#sleep 2.97 0.184 0.138 0.000 0.046 1640 Array#permutation 0.046 1640 Array#permutation 1.604yn:0.604ync:0401#0401.3040পিজি 

এখানে আমি স্পষ্টভাবে sleep আমার কল দেখতে পাচ্ছি , কিন্তু এটি সহজেই একটি API কল, একটি বড় ফাইল পড়া, একটি ধীর SQL কোয়েরি, ইত্যাদি হতে পারে৷

আরেকটি জিনিস যা আপনি করতে পারেন তা হল ইভেন্ট প্রোফাইলার ব্যবহার করা৷

এরকম :

EVENT_PROF='sql.active_record' EVENT_PROF_EXAMPLES=1 রেক

এটি আপনাকে কোন পরীক্ষাগুলি সবচেয়ে ধীরগতির প্রশ্নগুলি চালাচ্ছে তা খুঁজে পেতে সহায়তা করে৷

Btw, Rails 6 সমান্তরাল পরীক্ষা যোগ করেছে, আপনাকে এটি test/test_helpers.rb এ সক্ষম করতে হবে আপনি যদি আপনার বর্তমান প্রজেক্ট আপগ্রেড করেন।

5. আপনার ডেটা আরও সামঞ্জস্যপূর্ণ করুন

বৈধতা মহান।

কিন্তু আপনার ওয়েব অ্যাপ্লিকেশন তৈরি করতে আপনি কোন ফ্রেমওয়ার্ক ব্যবহার করছেন তা বিবেচ্য নয়৷

আপনি সর্বদা ডাটাবেসে সরাসরি ডেটা আমদানি করে, কাঁচা SQL ব্যবহার করে রেকর্ড তৈরি করে, অথবা আপনার ORM-এ এমন কিছু পদ্ধতি ব্যবহার করে যা বৈধতা এড়িয়ে যায়।

অন্য কথায়…

আপনার বৈধতা শুধুমাত্র ব্যবহারকারীর ত্রুটি থেকে আপনাকে রক্ষা করে, কিন্তু বিকাশকারীর ত্রুটি নয়৷

এই বিকাশকারী ত্রুটিগুলি আপনার ডেটাকে অসামঞ্জস্যপূর্ণ করে তুলতে পারে৷

সুসংবাদ?

বেশিরভাগ - যদি না হয় - আধুনিক SQL ডাটাবেস "সীমাবদ্ধতা" প্রয়োগ করে, বৈধকরণের মতো নিয়মের সেট, কিন্তু ডাটাবেস স্তরে৷

সুতরাং আপনি যদি আপনার ডেটা সামঞ্জস্য বাড়াতে চান তবে আপনি এই সীমাবদ্ধতাগুলি বাস্তবায়ন করতে চান।

একটি রত্ন যা আপনাকে সাহায্য করতে পারে তা হল ডেটাবেস_সংগতি।

কিভাবে এই রত্নটি ব্যবহার করবেন?

প্রথমে, আপনাকে এটি ইনস্টল করতে হবে, সেখানে কোন রহস্য নেই।

দ্বিতীয়ত, আপনি bundle exec database_consistency চালান একটি টার্মিনালে, আপনি যে প্রকল্পটি পরীক্ষা করতে চান তার ভিতরে।

এটি এরকম একটি প্রতিবেদন তৈরি করবে :

ফেল কমেন্ট শিরোনাম কলাম ডাটাবেসফেইলে আবশ্যক মন্তব্য লেখক কলাম ডাটাবেসে প্রয়োজন হওয়া উচিত

এরপর কি?

অনুপস্থিত ডাটাবেস সীমাবদ্ধতা যোগ করুন, এই ক্ষেত্রে, নট-নাল, একটি change_column_null সহ মাইগ্রেশন।

6. রিফ্যাক্টরিং টাইম! আপনার কোডে সবচেয়ে খারাপ অপরাধী কারা?

আপনার কোড উন্নত করতে চান, কিন্তু কোথায় শুরু করবেন তা নিশ্চিত নন?

কিছু ​​মেট্রিক্স পান!

সাইক্লোমেটিক জটিলতা এবং মন্থনের মতো অনেকগুলি কোড মেট্রিক্স রয়েছে। চার্ন আপনার কোডে সময়ের সাথে সাথে পরিবর্তনের হার দেখে।

কিভাবে?

আপনার গিট পরিবর্তনের ইতিহাস ব্যবহার করে।

ফলাফল?

ফাইলগুলির একটি তালিকা যা সবচেয়ে বেশি পরিবর্তন করে৷

আপনি যদি আপনার User পরিবর্তন করার সময় আপনার 90% ব্যয় করেন মডেল... এটি সম্ভবত দীর্ঘ পদ্ধতি সহ একটি বড় ফাইল। রিফ্যাক্টরিংয়ের জন্য একটি দুর্দান্ত প্রার্থী!

একটি রত্ন যা আপনাকে এই ক্রমাগত পরিবর্তনশীল ফাইলগুলি খুঁজে পেতে সহায়তা করে তাকে attractor বলা হয় .

এটি এভাবে চালান :

আকর্ষণকারী রিপোর্ট -p অ্যাপ

এটি একটি HTML রিপোর্ট তৈরি করে, এবং উচ্চ-মন্থন ফাইলগুলির একটি তালিকা যা আপনি আপনার রিফ্যাক্টরিং প্রচেষ্টাকে ফোকাস করতে ব্যবহার করতে পারেন৷

ভাল জিনিস!

7. কোন কোড উৎপাদনে ব্যবহৃত হয় এবং কোনটি নয় তা খুঁজে বের করুন

আপনার কোড উন্নত করতে সাহায্য করার জন্য অন্য টুল দিয়ে শেষ করা যাক।

একে coverband বলা হয় .

আপনি যদি এই রত্নটি উৎপাদনে চালান (কম ওভারহেড), তাহলে আপনি কোন কোডটি চালানো হচ্ছে তার একটি কভারেজ রিপোর্ট পাবেন।

এমনকি আপনি অব্যবহৃত ভিউ ট্র্যাক করতে পারেন!

7 দুর্দান্ত রুবি রত্ন বেশিরভাগ লোকেরা শুনেননি

কোড মুছে ফেলা এবং আপনার প্রকল্প পরিষ্কার করার সময় এটি আপনাকে সিদ্ধান্ত নিতে সাহায্য করতে পারে।

অব্যবহৃত কোড তৈরি হতে দেবেন না!

সারাংশ

আপনি 7টি শক্তিশালী এবং স্বল্প পরিচিত রুবি রত্ন সম্পর্কে শিখেছেন যা আপনি আপনার পরীক্ষাগুলিকে দ্রুততর করতে, আপনার কোড উন্নত করতে এবং সুরক্ষা বাড়াতে আপনার (বেশিরভাগই রেল) প্রকল্পগুলিতে ব্যবহার করতে পারেন৷

রত্ন অপব্যবহার সম্পর্কে সামান্য সতর্কতা মনে রাখবেন, কিন্তু এটি আপনাকে নতুন রত্ন চেষ্টা করা থেকে বিরত রাখতে দেবেন না।

আপনি যদি আপনার রুবি দক্ষতা উন্নত করতে চান এবং ব্লগকে সমর্থন করতে চান, তাহলে আমার রুবি বই, রুবি ডিপ ডাইভের একটি অনুলিপি কেনার কথা বিবেচনা করুন। 🙂

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


  1. রেলে রুবি কি এবং কেন এটি দরকারী?

  2. রুবির লুকানো রত্ন, স্ট্রিংস্ক্যানার

  3. রেল কিভাবে রত্ন হ্যান্ডেল করে?

  4. আমি রেল পডকাস্টে রুবিতে ছিলাম!