এই আর্টিকেলটি রাশিয়ান ভাষায় অনুবাদ করা হয়েছে, ধন্যবাদ লিওনিদ সুশেবকে।
আপনি কাজে নতুন টিমে যোগ দিয়েছেন, বা নতুন জয়েন করেছেন। অথবা আপনার প্রিয় ওপেন-সোর্স অ্যাপ্লিকেশনে একটি বাগ পেয়েছেন, এবং প্রথম পুল রিকোয়েস্ট লিখতে চান। তবে git clone করেই app/models খোলার সাথে সাথে আপনি পুরোপুরি হারিয়ে যাচ্ছেন। রেইলস স্ট্রাকচার তো আপনার পরিচিত, কিন্তু কোডর মধ্যে পথ খুঁজে পাওয়া অসম্ভব লাগছে। তো নতুন, অপরিচিত এই রেইলস অ্যাপ্লিকেশন বুঝতে সবচেয়ে দ্রুত উপায় কী?
প্রজেক্ট ভোকাবুলারি তৈরি করুন
Player কী, আর Session কী? Account বনাম User বনাম Provider - পার্থক্য কী?
প্রতিটি অ্যাপ্লিকেশন ভিন্ন শব্দ এবং ভিন্ন রূপক ব্যবহার করে। যদি আপনি একটি অ্যাপ্লিকেশনের ভোকাবুলারি না বুঝেন, তবে প্রতিবার নতুন ক্লাস নাম দেখলে app/models ব্রাউজ করতে গিয়ে সময় নষ্ট করবেন। অথবা আরও খারাপ, ফিচার কীভাবে কাজ করে সেটা নিয়ে ভুল ধারণা বানাবেন।
তাই, প্রথমে করণীয় হলো সেটি ভোকাবুলারি তৈরি করা। জানুন এই অ্যাপ্লিকেশন কী কী দিয়ে তৈরি। এবং দ্রুত করতে চাইলে, db/schema.rb পড়া শুরু করুন। আপনি অ্যাপ্লিকেশন যে শব্দগুলো ব্যবহার করে সেগুলো শিখবেন, এবং এর সব ডেটা কীভাবে একসাথে ফিট করে সেটাও। *_id কলামগুলোতে বিশেষ মনোযোগ দিন, যাতে মডেলগুলো একে অপরের সাথে কীভাবে কানেক্টেড সেটা দেখতে পান।
আপনি যদি ভিজুয়ালি ভাবতে চান, rails-erd জেম ট্রাই করুন। এটি আপনার রেইলস মডেল থেকে ডায়াগ্রাম জেনারেট করে, সকল টেবিল, কলাম, এবং সেগুলোর পারস্পরিক সম্পর্ক দেখিয়ে। আপনার ডেস্কে একটা প্রিন্ট আউট রাখুন, বাকি অ্যাপ্লিকেশন বুঝতে সহজ হবে।
মডেল এবং প্লেইন রুবি অবজেক্টের সাথে চালিয়ে যান
একটি ভালো ডিজাইনকৃত রেইলস অ্যাপ্লিকেশনে, সব কিছু ডাটাবেস টেবিলের পেছনে থাকবে না। আপনার প্রজেক্ট ভোকাবুলারি আরও সমৃদ্ধ করতে, app/models-এ ঝাঁকুন যেন ডাটাবেস স্কিমায় দেখা যায়নি এমন এক্সট্রা ক্লাস এবং অ্যাট্রিবিউট খুঁজে পান।
এখানে অনেক সময় ব্যয় করবেন না। কীভাবে কাজ করে সেটা জানতে যেতে গিয়ে সহজেই হারিয়ে যাওয়া যায়। আপনি শুধু আপনার প্রজেক্ট ভোকাবুলারি পূরণ করতে এসেছেন।
যখন আপনি অ্যাপ্লিকেশনের বিভিন্ন পার্ট সম্পর্কে জানতে শুরু করবেন, তখন আপনি জিজ্ঞাসা করতে পারেন কেন নির্দিষ্ট অবজেক্টগুলো আছে, অথবা কেন সেগুলো এভাবে একসাথে ফিট করে। এবং সেটাই পরবর্তী ধাপের উদ্দেশ্য।
অ্যাপ্লিকেশন ট্রাই করুন, এবং "কেন" জানুন
যখন আপনি অ্যাপ্লিকেশন যেসব অবজেক্ট ব্যবহার করে সেগুলোর সাথে কমফোর্টেবল হয়ে যান, অ্যাপ্লিকেশনটি চালু করুন। ক্লিক করে ঘুরে ফিরুন। ডকুমেন্টেশন থাকলে সাহায্য পাবেন। নাহলে, শুধু আপনি শিখেছি সেই শব্দগুলো জীবন্ত হয়ে উঠতে দেখুন।
অ্যাপ্লিকেশন ব্যবহার করার সাথে সাথে, আপনি একটি উচ্চস্তর থেকে সেটা দেখতে শুরু করবেন। বুঝতে পারবেন মডেলগুলোর অ্যাসোসিয়েশন যেভাবে আছে তার পেছনে কারণ আছে। কেন সেগুলো একসাথে গ্রুপ করা হয়েছে। কেন সেই ক্লাসের নামগুলো বেছে নেওয়া হয়েছে। হয়তো সেগুলো সব একই পেজে দেখায়, অথবা একই ফর্ম থেকে তৈরি হয়।
যখন আপনি অ্যাপ্লিকেশনের পার্টগুলো কী এবং কেন সেগুলো এভাবে আছে সেটা বুঝতে শুরু করবেন, তখন আপনি বুঝতে পারবেন সেটা কীভাবে কাজ করে।
"কীভাবে" বের করুন
এখন পর্যন্ত, আপনি অ্যাপ্লিকেশন ডিটেইলসে শিখতে যথেষ্ট জানতে পারছেন। নতুন শব্দ এবং নতুন ইন্টারঅ্যাকশন আপনাকে ডিসট্র্যাক্ট করবে না। আপনি একটা জিনিস বেছে নিন যা শিখতে চান, এবং সেটাকে শেষ পর্যন্ত ফলো করুন।
এখান থেকে অনেক পথে যেতে পারেন। আমার পছন্দের কিছু:
- ইউআই ব্রাউজ করুন, এবং চিন্তা করুন: আমি যা জানি সেটা দিয়ে এই ফিচার কীভাবে বিল্ড করা যায়? অনুমান করুন। ডিবাগার ব্যবহার করে অনুমান কনফার্ম করুন, অথবা আসল কাজকাণ্ড আবিষ্কার করুন।
- একটি টেস্ট কেস বেছে নিন এবং সেটাকে পুরো অ্যাপ্লিকেশনের মাধ্যমে ফলো করুন। কোড পড়ুন, অথবা ডিবাগার দিয়ে এক্সপ্লোর করুন।
- একটি রাউট বা কন্ট্রোলার একশন বেছে নিন। আপনি কী সেটা ইউআই থেকে পৌঁছাতে পারেন? বের করুন।
এই সময় আপনার মডেল এবং প্লেইন রুবি অবজেক্টগুলো পুনরায় ঘুরে বের করার জন্য ভালো। এবং এইবার, আপনি কীভাবে মডেলগুলো কাজ করে সেটার ডিটেইলসে যেতে পারেন।
অ্যাপ্লিকেশনের প্রতি কৌতূহলী बनুন। আপনার জ্ঞানের গ্যাপ খুঁজে বের করুন এবং ডিবাগার ও কোড দিয়ে সেগুলো পূরণ করুন।
কেন টেস্ট দিয়ে শুরু করবেন না?
সবসময় লোকজন বলে, "কোডবেস বুঝতে চাইলে টেস্ট দিয়ে শুরু কর! টেস্টগুলো এক্সিকিউটেবল ডকুমেন্টেশন!"
তবে আমার জন্য এটি কখনো কাজ করেনি। টেস্ট কেসগুলো খুব ন্যারো, খুব ডিটেইলড। টেস্ট থেকে শিখলে মনে হয় অ্যাপ্লিকেশনের বড় পিকচার মিস করছি।
রেইলস অ্যাপ্লিকেশনের মত বড় কিছু বুঝতে, আমার সবসময় একটি ওভারভিউ দরকার পড়েছে। জানতে হয়েছে অ্যাপ্লিকেশনের কোন কম্পোনেন্টগুলো তৈরি করেছে, এবং কেন সেগুলো আছে।
তবে নিশ্চিত করুন টেস্টগুলো রান হচ্ছে। না হলে, আপনি একটি ব্রোকেন সিস্টেমের সাথে কাজ করছেন। এবং ব্রোকেন সিস্টেম থেকে যা আবিষ্কার করবেন সেটা বিশ্বস্ত করা যাবে না।
কী, কেন, থেকে কীভাবে
নতুন রেইলস অ্যাপ্লিকেশন বুঝতে, এই তিনটি ফেজ মেনে চলুন, এই ক্রমে:
- কী পার্টগুলো এই অ্যাপ্লিকেশন বানিয়েছে?
- কেন সেগুলো আছে? কেন এভাবে একসাথে রাখা হয়েছে?
- কীভাবে প্রতিটি টুকরো কাজ করে?
এই পদ্ধতিতে আপনাকে ব্র্যাড পয়েন্ট অফ ভিউ এবং ন্যারো নলেজ - দুটোই মিলবে যাতে আপনি নতুন অ্যাপ্লিকেশনটাকে আপনার করতে পারেন।
ন.ব. আমি প্র্যাকটিসিং রেইলস পর সপ্তাহে রিলিজ করছি। তাই আপনি যদি ২৫% আর্লি এক্সেস ডিসকাউন্ট চান, তো শীঘ্রই অর্ডার করুন!