Ruby on Rails (RoR) একটি MVC (Model-View-Controller) ভিত্তিক ফ্রেমওয়ার্ক, যা ডেভেলপারদের জন্য ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ এবং দ্রুত করে তোলে। Rails এর একটি নির্দিষ্ট ডিরেক্টরি এবং ফাইল স্ট্রাকচার রয়েছে, যা অ্যাপ্লিকেশনটির কার্যকারিতা এবং মেইনটেনেন্সকে আরও সহজ করে তোলে। নিচে Rails এর ডিরেক্টরি এবং ফাইল স্ট্রাকচার বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
Rails এর ডিরেক্টরি স্ট্রাকচার
project_name/
├── app/
│ ├── assets/
│ ├── channels/
│ ├── controllers/
│ ├── helpers/
│ ├── mailers/
│ ├── models/
│ ├── views/
├── bin/
├── config/
├── db/
├── lib/
├── log/
├── public/
├── storage/
├── test/ বা spec/
├── tmp/
└── vendor/
মূল ডিরেক্টরি এবং ফাইল সমূহ
app/
এটি Rails অ্যাপ্লিকেশনের মূল অংশ, যেখানে মডেল, ভিউ, কন্ট্রোলার এবং অন্যান্য অ্যাপ্লিকেশন লজিক থাকে।
- assets/:
CSS, JavaScript এবং ইমেজসহ স্ট্যাটিক ফাইলগুলি এই ডিরেক্টরিতে থাকে।
উদাহরণ:app/assets/stylesheets/application.css - channels/:
অ্যাকশন কেবল (ActionCable) ব্যবহার করে রিয়েল-টাইম অ্যাপ্লিকেশন ফিচার তৈরির জন্য ব্যবহৃত হয়।
উদাহরণ:app/channels/application_cable/connection.rb - controllers/:
ব্যবহারকারীর রিকোয়েস্ট প্রক্রিয়া করা এবং মডেল ও ভিউয়ের মধ্যে তথ্যের আদান-প্রদান করা।
উদাহরণ:app/controllers/users_controller.rb - helpers/:
ভিউ ফাইলের পুনরাবৃত্তি কোড সংরক্ষণ করে, যা ভিউতে ব্যবহৃত হয়।
উদাহরণ:app/helpers/application_helper.rb - mailers/:
ইমেল সংক্রান্ত কার্যকলাপ পরিচালনা করার জন্য।
উদাহরণ:app/mailers/user_mailer.rb - models/:
ডেটাবেস এবং ডেটার লজিক সংক্রান্ত ফাইলগুলি।
উদাহরণ:app/models/user.rb - views/:
ইউজার ইন্টারফেস বা ভিউ ফাইলগুলি।
উদাহরণ:app/views/users/show.html.erb
bin/
এই ডিরেক্টরিটি এক্সিকিউটেবল ফাইলগুলো ধারণ করে যা রেলস অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়।
উদাহরণ: bin/rails, bin/rake
config/
এখানে অ্যাপ্লিকেশনের কনফিগারেশন ফাইলগুলি সংরক্ষণ করা হয়। এতে অ্যাপ্লিকেশন, ডাটাবেস, রাউটিং ইত্যাদির কনফিগারেশন থাকে।
- routes.rb:
রাউটিং ফাইল, যেখানে URL এবং কন্ট্রোলার অ্যাকশন ম্যাপ করা হয়।
উদাহরণ:config/routes.rb - database.yml:
ডেটাবেসের কনফিগারেশন ফাইল।
উদাহরণ:config/database.yml - environments/:
ডেভেলপমেন্ট, প্রোডাকশন এবং টেস্টিং পরিবেশের কনফিগারেশন ফাইল।
উদাহরণ:config/environments/development.rb
db/
এই ডিরেক্টরি ডেটাবেস মাইগ্রেশন এবং স্কিমা সম্পর্কিত ফাইল ধারণ করে।
- migrate/:
ডেটাবেস মাইগ্রেশন ফাইল।
উদাহরণ:db/migrate/20211204010100_create_users.rb - schema.rb:
ডেটাবেসের কাঠামো (schema) সংরক্ষণ করে।
উদাহরণ:db/schema.rb
lib/
এই ডিরেক্টরিতে কাস্টম মডিউল এবং ক্লাস থাকে, যা রিইউজেবল কোডের জন্য ব্যবহৃত হয়।
- lib/tasks/:
কাস্টম Rake টাস্ক থাকে।
উদাহরণ:lib/tasks/custom_task.rake
log/
অ্যাপ্লিকেশন চালানোর সময় লগ ফাইলগুলো এখানে সংরক্ষিত হয়। এটি ডেভেলপমেন্ট, প্রোডাকশন বা টেস্টিং পরিবেশের জন্য আলাদা আলাদা লগ ফাইল থাকতে পারে।
উদাহরণ: log/development.log
public/
স্ট্যাটিক ফাইল যেমন, 404 বা 500 এর পেজ এবং অন্যান্য ইউজার এক্সপিরিয়েন্স ফাইলগুলি এখানে থাকে।
উদাহরণ: public/404.html
storage/
এটি Active Storage এর মাধ্যমে আপলোড করা ফাইলগুলো সংরক্ষণ করে, যেমন ছবি বা ভিডিও।
উদাহরণ: storage/uploads
test/ বা spec/
Rails অ্যাপ্লিকেশনে টেস্টিং কাঠামো থাকে। রেলস প্রাথমিকভাবে Minitest ব্যবহার করে, তবে RSpecও খুব জনপ্রিয়।
- test/models/:
মডেল সম্পর্কিত টেস্ট ফাইল।
উদাহরণ:test/models/user_test.rb - test/controllers/:
কন্ট্রোলার সম্পর্কিত টেস্ট ফাইল।
উদাহরণ:test/controllers/users_controller_test.rb - test/helpers/:
হেল্পার সম্পর্কিত টেস্ট ফাইল।
উদাহরণ:test/helpers/application_helper_test.rb
tmp/
অস্থায়ী ফাইল, ক্যাশ এবং সেশন সম্পর্কিত ডেটা এখানে থাকে।
উদাহরণ: tmp/cache
vendor/
তৃতীয় পক্ষের লাইব্রেরি বা প্যাকেজ সংরক্ষণ করে।
উদাহরণ: vendor/assets
সারাংশ
Rails অ্যাপ্লিকেশনের ডিরেক্টরি স্ট্রাকচার খুবই সংগঠিত, যা অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং মেইনটেনেন্সকে সহজ করে তোলে। এটি মডেল, ভিউ, কন্ট্রোলার, কনফিগারেশন, টেস্টিং এবং অন্যান্য ফাংশনালিটি আলাদা করে রাখে, যাতে কোডের পুনঃব্যবহার এবং মডুলারিটি নিশ্চিত হয়।
রুবি অন রেইল (Ruby on Rails) একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক যা Model-View-Controller (MVC) আর্কিটেকচার অনুসরণ করে। প্রতিটি রেইল অ্যাপ্লিকেশনে একটি নির্দিষ্ট ডিরেক্টরি স্ট্রাকচার থাকে যা অ্যাপ্লিকেশনটির কোড এবং রিসোর্স ম্যানেজমেন্ট সহজ করে তোলে। এই ফোল্ডার গঠন ডেভেলপারদের জন্য অ্যাপ্লিকেশনটির ভিন্ন ভিন্ন অংশ আলাদা করে সংরক্ষণ এবং পরিচালনা করতে সহায়তা করে।
Rails অ্যাপ্লিকেশন ফোল্ডার গঠন
project_name/
├── app/
│ ├── assets/
│ ├── controllers/
│ ├── helpers/
│ ├── mailers/
│ ├── models/
│ ├── views/
│ └── channels/
├── bin/
├── config/
├── db/
├── lib/
├── log/
├── public/
├── storage/
├── test/ বা spec/
├── tmp/
└── vendor/
মূল ফোল্ডার এবং তাদের ভূমিকা
app/
এই ফোল্ডারটি Rails অ্যাপ্লিকেশনের মূল কোড ধারণ করে, যেখানে MVC আর্কিটেকচারের তিনটি উপাদান সংরক্ষিত থাকে।
- assets/:
এখানে CSS, JavaScript, এবং ইমেজ ফাইল থাকে। এগুলো ওয়েব অ্যাপ্লিকেশনের ফ্রন্টএন্ড রিসোর্স।
উদাহরণ:app/assets/stylesheets/application.css। - controllers/:
এখানে রিকোয়েস্টের জন্য কন্ট্রোলার ফাইল থাকে, যা ইউজারের রিকোয়েস্ট প্রক্রিয়া করে এবং মডেল এবং ভিউয়ের মধ্যে সমন্বয় করে।
উদাহরণ:app/controllers/application_controller.rb। - models/:
মডেলগুলি ডেটাবেস এবং ব্যবসায়িক লজিক পরিচালনা করে। মডেল ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলার কার্যক্রম করে।
উদাহরণ:app/models/user.rb। - views/:
এখানে ইউজার ইন্টারফেসের জন্য ভিউ টেমপ্লেট থাকে। ভিউ ফাইল HTML বা অন্যান্য ফরম্যাটে ডেটা প্রেরণ এবং উপস্থাপন করে।
উদাহরণ:app/views/welcome/index.html.erb। - helpers/:
এখানে ভিউ টেমপ্লেটের জন্য পুনরাবৃত্ত কোড এবং ইউটিলিটি ফাংশন থাকে।
উদাহরণ:app/helpers/application_helper.rb। - mailers/:
এখানে ইমেল সম্পর্কিত কার্যক্রম থাকে। ব্যবহারকারীদের জন্য ইমেল পাঠানোর জন্য লজিক পরিচালনা করে।
উদাহরণ:app/mailers/user_mailer.rb। - channels/:
Action Cable এর মাধ্যমে রিয়েল-টাইম কমিউনিকেশন সম্পর্কিত ফাইল থাকে।
উদাহরণ:app/channels/application_cable/connection.rb।
bin/
এই ফোল্ডারটি এক্সিকিউটেবল স্ক্রিপ্ট ধারণ করে, যেমন rails এবং rake কমান্ড। এগুলি অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়।
config/
এই ফোল্ডারে অ্যাপ্লিকেশনের কনফিগারেশন ফাইল থাকে, যেখানে ডাটাবেস সংযোগ, রাউটিং, এবং অন্যান্য পরিবেশগত সেটিংস সংরক্ষণ করা হয়।
- routes.rb:
রাউটিং কনফিগারেশন থাকে, যা URL রিকোয়েস্ট কন্ট্রোলারে ম্যাপ করে। - database.yml:
ডেটাবেস সংক্রান্ত কনফিগারেশন থাকে। - environments/:
ডেভেলপমেন্ট, প্রোডাকশন, এবং টেস্টিং এনভায়রনমেন্টের কনফিগারেশন।
db/
ডেটাবেস সংক্রান্ত ফাইল এবং মাইগ্রেশন ফাইল এখানে থাকে। মাইগ্রেশন ফাইলগুলি ডেটাবেস স্ট্রাকচার আপডেট করে।
- migrate/:
মাইগ্রেশন ফাইল যেখানে ডেটাবেসের স্ট্রাকচার পরিবর্তন করা হয়। - seeds.rb:
ডেটাবেসে প্রাথমিক ডেটা ইনসার্ট করার জন্য ব্যবহৃত হয়।
lib/
কাস্টম লাইব্রেরি, টুলস এবং ইউটিলিটি কোড সংরক্ষিত থাকে। এখানে আপনার নিজস্ব কোড, যেটি অ্যাপ্লিকেশনের মূল অংশ না হলেও প্রয়োজনীয়, রাখা হয়।
- lib/tasks/:
কাস্টম Rake টাস্ক সংরক্ষণ করা হয়।
log/
অ্যাপ্লিকেশনের লগ ফাইল এখানে থাকে, যা ডিবাগিং এবং ট্রাবলশুটিংয়ের জন্য ব্যবহৃত হয়।
উদাহরণ: log/development.log।
public/
স্ট্যাটিক ফাইল যেমন HTML, ইমেজ, এবং JavaScript ফাইল থাকে। এই ফাইলগুলি সরাসরি ইউজারদের কাছে এক্সপোজ করা হয়।
উদাহরণ: public/404.html।
storage/
Active Storage এর মাধ্যমে আপলোড করা ফাইল এখানে সংরক্ষণ হয়। এটি ফাইলগুলির স্টোরেজ এবং পরিচালনার জন্য ব্যবহৃত হয়।
test/ বা spec/
এই ফোল্ডারটি অ্যাপ্লিকেশনের টেস্ট ফাইল ধারণ করে, যেখানে টেস্ট কেসগুলো লেখা হয়। এটি কোডের গুণগত মান নিশ্চিত করতে ব্যবহৃত হয়।
tmp/
অস্থায়ী ফাইল এবং ক্যাশ সংরক্ষণ করে, যেমন টেম্পরারি লগ, সেশন ফাইল ইত্যাদি।
vendor/
তৃতীয় পক্ষের জেম এবং লাইব্রেরি সংরক্ষণ করে, যা অ্যাপ্লিকেশনে ব্যবহৃত হয়।
Rails অ্যাপ্লিকেশন ফোল্ডার গঠনের সুবিধা
- কাঠামোগত আর্কিটেকচার:
MVC প্যাটার্ন অনুসরণ করার ফলে অ্যাপ্লিকেশনটি সুনির্দিষ্ট এবং মডিউলার থাকে। - সহজ মেইনটেনেন্স:
কোড এবং ফাইলগুলো আলাদা আলাদা ফোল্ডারে রাখা হয়, যাতে কোড পরিবর্তন সহজ হয়। - সহজ ডিবাগিং:
লগ ফাইল এবং টেস্ট ফোল্ডারের মাধ্যমে ডিবাগিং সহজ হয়।
সারমর্ম
Ruby on Rails অ্যাপ্লিকেশন ডিরেক্টরি স্ট্রাকচার কোডের গঠন এবং ব্যবস্থাপনা সহজ করে, যা ডেভেলপারদের কাজকে আরো কার্যকর এবং সুষ্ঠু করে তোলে। Rails ফোল্ডার গঠন MVC প্যাটার্নের উপর ভিত্তি করে, যেখানে কোড, ডেটা এবং ইউজার ইন্টারফেসের সকল উপাদান আলাদা রাখা হয়।
Ruby on Rails (RoR) একটি Model-View-Controller (MVC) ভিত্তিক ফ্রেমওয়ার্ক, যেখানে প্রতিটি উপাদান (Model, View, এবং Controller) বিশেষ ভূমিকা পালন করে। এই আর্কিটেকচার ডেভেলপমেন্ট প্রক্রিয়াকে কাঠামোবদ্ধ এবং সহজ করে তোলে, কারণ প্রতিটি উপাদান আলাদা দায়িত্ব পালন করে।
Model ফোল্ডার এর ভূমিকা
Model ফোল্ডারটি অ্যাপ্লিকেশনের ডেটা এবং ডেটাবেসের লজিক সংরক্ষণ করে। Model মডেলগুলি সাধারণত ডেটার ম্যানিপুলেশন এবং ব্যবসায়িক লজিকের কাজ করে, এবং অ্যাপ্লিকেশনটির ডেটাবেসের সাথে যোগাযোগ করে।
Model এর ভূমিকা:
- ডেটাবেস ইন্টারঅ্যাকশন:
Model ফোল্ডারের মডেলগুলি ডেটাবেসের সাথে যোগাযোগ করে এবং ডেটা সঞ্চয়, পরিবর্তন বা মুছে ফেলার কাজ করে। Ruby on Rails এর Active Record হল একটি ORM (Object-Relational Mapping) যা মডেল এবং ডেটাবেসের মধ্যে সম্পর্ক তৈরি করে। - ডেটা ভ্যালিডেশন:
Model ফোল্ডারে আপনি ডেটার ভ্যালিডেশন এবং ক্লিন আপ কার্যক্রম সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, মডেলের মধ্যেvalidatesপদ্ধতি ব্যবহার করে ডেটা ভ্যালিডেশন করা হয়। - ব্যবসায়িক লজিক:
Model ফোল্ডার অ্যাপ্লিকেশনের ব্যবসায়িক লজিক (যেমন: যোগফল, ডেটা ফিল্টারিং, ক্যালকুলেশন ইত্যাদি) নির্ধারণ করে।
উদাহরণ:
# app/models/user.rb
class User < ApplicationRecord
validates :name, presence: true
has_many :posts
end
এখানে User মডেলটি name ফিল্ডের জন্য ভ্যালিডেশন এবং posts এর সাথে সম্পর্ক সংজ্ঞায়িত করেছে।
View ফোল্ডার এর ভূমিকা
View ফোল্ডারটি ইউজারের ইন্টারফেস উপস্থাপন করে। এখানে সাধারণত HTML, CSS, এবং JavaScript কোড রাখা হয়, যা ব্যবহারকারীর সামনে প্রদর্শিত হয়। ERB (Embedded Ruby) টেমপ্লেট ব্যবহার করে ডাইনামিক HTML তৈরি করা হয়।
View এর ভূমিকা:
- ইউজার ইন্টারফেস:
View ফোল্ডারটি UI উপস্থাপনা সংক্রান্ত সমস্ত ফাইল ধারণ করে, যেখানে ব্যবহারকারী অ্যাপ্লিকেশনটির সাথে ইন্টারঅ্যাক্ট করে। - ডেটা উপস্থাপন:
Controller থেকে প্রাপ্ত ডেটাকে View টেমপ্লেট ব্যবহার করে উপস্থাপন করা হয়। - ডাইনামিক HTML রেন্ডারিং:
Ruby কোড HTML এর মধ্যে এম্বেড করা হয় (ERB টেমপ্লেটের মাধ্যমে), যার মাধ্যমে ডাইনামিক কনটেন্ট তৈরি করা হয়।
উদাহরণ:
<!-- app/views/users/show.html.erb -->
<h1><%= @user.name %></h1>
<p>Email: <%= @user.email %></p>
এখানে @user.name এবং @user.email ব্যবহার করে ডাইনামিক ডেটা উপস্থাপন করা হয়েছে।
Controller ফোল্ডার এর ভূমিকা
Controller ফোল্ডারটি Model এবং View এর মধ্যে সংযোগ স্থাপন করে। এটি ইউজারের রিকোয়েস্ট প্রক্রিয়া করে এবং প্রয়োজনীয় ডেটা (Model থেকে) সংগ্রহ করে তা View এ পাঠায়। Controller ফোল্ডারের কাজ হলো ব্যবসায়িক লজিক এবং রাউটিং।
Controller এর ভূমিকা:
- রিকোয়েস্ট প্রক্রিয়াকরণ:
Controller ইউজারের HTTP রিকোয়েস্ট গ্রহণ করে, সেই রিকোয়েস্ট অনুযায়ী অ্যাকশন পরিচালনা করে এবং উপযুক্ত View এ ডেটা পাঠায়। - ডেটা সংগ্রহ:
Controller ফোল্ডার মডেল থেকে ডেটা সংগ্রহ করে এবং তা View এ প্রদর্শন করার জন্য প্রস্তুত করে। - অ্যাকশন সংজ্ঞায়ন:
প্রতিটি Controller একটি বা একাধিক অ্যাকশন ধারণ করে, যা রিকোয়েস্টের ভিত্তিতে নির্দিষ্ট কাজ সম্পন্ন করে (যেমন, ডেটা তৈরি, সম্পাদনা, মুছে ফেলা বা প্রদর্শন করা)।
উদাহরণ:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
end
এখানে UsersController একটি show অ্যাকশন রয়েছে, যা id প্যারামিটার ব্যবহার করে নির্দিষ্ট User মডেলটি খুঁজে বের করে এবং @user ভেরিয়েবল হিসেবে View এ পাঠায়।
সারমর্ম
- Model: ডেটার লজিক এবং ডেটাবেসের সাথে সম্পর্কিত কাজ করে।
- View: ব্যবহারকারীর জন্য ডাইনামিক UI তৈরি করে এবং ডেটা প্রদর্শন করে।
- Controller: ইউজারের রিকোয়েস্ট প্রক্রিয়া করে এবং Model ও View এর মধ্যে সংযোগ স্থাপন করে।
এই তিনটি উপাদান একত্রে কাজ করে Ruby on Rails এর MVC আর্কিটেকচার, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে কাঠামোবদ্ধ এবং সহজ করে তোলে।
Ruby on Rails এ routes.rb এবং config/ ডিরেক্টরির কনফিগারেশন ফাইলগুলি অ্যাপ্লিকেশন এর রাউটিং এবং অন্যান্য কনফিগারেশন নির্ধারণ করে। এই ফাইলগুলো Rails অ্যাপ্লিকেশনের কাজের প্রবাহ এবং সঠিক পরিবেশ নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে। নিচে routes.rb এবং config/ ডিরেক্টরির বিভিন্ন কনফিগারেশন ফাইল সম্পর্কে বিস্তারিত আলোচনা করা হলো।
routes.rb ফাইল
routes.rb ফাইলটি Rails অ্যাপ্লিকেশনের config/ ডিরেক্টরির মধ্যে অবস্থিত এবং এটি অ্যাপ্লিকেশনের URL রাউটিং এবং রিকোয়েস্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। রাউটিং বলতে বোঝায়, ইউজারের রিকোয়েস্ট কোন কন্ট্রোলার এবং অ্যাকশনে যাবে, তা নির্ধারণ করা।
routes.rb এর মূল কাজ:
- URL রাউটিং: রিকোয়েস্ট আসলে তা কন্ট্রোলার এবং অ্যাকশনেও রিডাইরেক্ট করা হয়।
- RESTful রাউটিং: Rails-এর কনভেনশন অনুযায়ী রাউটিং তৈরি হয়।
- Custom রাউটিং: আপনি চাইলে কাস্টম রাউটিংও করতে পারেন।
routes.rb এর সাধারণ কাঠামো:
Rails.application.routes.draw do
# root route (home page)
root 'welcome#index'
# Standard RESTful routes
resources :articles
# Custom route
get 'about', to: 'pages#about'
# Named route
get 'contact', to: 'pages#contact', as: 'contact'
# Custom route with parameters
get 'articles/:id', to: 'articles#show', as: 'article_show'
end
রাউটিং এর উদাহরণ:
Root route:
root 'home#index'এই রাউটটি অ্যাপ্লিকেশনের হোম পেজ (main landing page) হিসেবে কাজ করবে।
RESTful resources:
resources :postsএটি স্বয়ংক্রিয়ভাবে posts কন্ট্রোলারের জন্য 7টি রাউট (index, show, new, edit, create, update, destroy) তৈরি করে।
Custom route:
get 'about', to: 'pages#about'এটি
aboutURL পেজকে pages কন্ট্রোলারের about অ্যাকশনে রিডাইরেক্ট করবে।
Config ফাইলের কনফিগারেশন
config/ ডিরেক্টরিটি Rails অ্যাপ্লিকেশনের বিভিন্ন কনফিগারেশন ফাইল ধারণ করে, যেগুলো অ্যাপ্লিকেশনের বিভিন্ন পর্যায়ে সেটিংস এবং কনফিগারেশন ধারণ করে।
config ডিরেক্টরির প্রধান ফাইলগুলি:
- config/application.rb:
- এটি অ্যাপ্লিকেশনের কনফিগারেশন ফাইল এবং এখানে বিভিন্ন জেনারেল কনফিগারেশন সেটিংস রাখা হয়।
উদাহরণ:
config.time_zone = 'Asia/Dhaka' config.eager_load_paths += %W(#{config.root}/lib)
- config/routes.rb:
- রাউটিং কনফিগারেশন ফাইল যা অ্যাপ্লিকেশনের URL রিকোয়েস্টের পথ নির্ধারণ করে (যেমন উপরে আলোচনা করা হয়েছে)।
- config/database.yml:
- এই ফাইলটি ডেটাবেসের কনফিগারেশন সংরক্ষণ করে। এতে ডেটাবেসের অ্যাক্সেস ডিটেইলস যেমন, অ্যাডমিন, পাসওয়ার্ড এবং ডেটাবেসের প্রকার (MySQL/PostgreSQL/SQLite) থাকে।
উদাহরণ:
development: adapter: postgresql database: myapp_development username: myuser password: mypassword
- config/environments/:
- এখানে আলাদা আলাদা কনফিগারেশন ফাইল রয়েছে (যেমন, development.rb, production.rb, test.rb) যা নির্ধারণ করে অ্যাপ্লিকেশন কোন পরিবেশে চলছে এবং সেই পরিবেশে কী ধরনের কনফিগারেশন প্রয়োজন হবে।
উদাহরণ (development.rb):
config.cache_classes = false config.eager_load = false config.consider_all_requests_local = true
- config/secrets.yml:
- এটি অ্যাপ্লিকেশনের সিক্রেট কী এবং অন্যান্য সুরক্ষিত তথ্য সংরক্ষণ করে। বর্তমানে এটি
credentials.yml.encতে রিফ্যাক্টর করা হয়েছে, তবে পুরনো অ্যাপ্লিকেশনগুলিতে এটি থাকতে পারে।
- এটি অ্যাপ্লিকেশনের সিক্রেট কী এবং অন্যান্য সুরক্ষিত তথ্য সংরক্ষণ করে। বর্তমানে এটি
- config/initializers/:
- এখানে বিভিন্ন প্রাথমিক কনফিগারেশন ফাইল থাকে, যেমন থার্ড-পার্টি লাইব্রেরি কনফিগারেশন বা অন্যান্য কাস্টম সেটিংস।
Routes.rb এবং Config ফাইলের কনফিগারেশন ব্যবহার কেন গুরুত্বপূর্ণ?
- URL রাউটিং কন্ট্রোল:
routes.rbফাইলের মাধ্যমে অ্যাপ্লিকেশনের ইউআরএল রিকোয়েস্ট কন্ট্রোল করা হয়, যা অ্যাপ্লিকেশনের কাঠামোকে সুন্দর এবং সুশৃঙ্খল রাখে। - অ্যাপ্লিকেশন কনফিগারেশন:
config/application.rb,config/database.yml,config/routes.rbইত্যাদি কনফিগারেশন ফাইলের মাধ্যমে আপনার অ্যাপ্লিকেশনের সঠিক সেটিংস নির্ধারণ করা হয়, যেমন ডেটাবেস, পরিবেশ, এবং অন্যান্য বৈশিষ্ট্য। - প্রোডাকশন পরিবেশে কনফিগারেশন:
config/environments/production.rbফাইলের মাধ্যমে আপনি প্রোডাকশন পরিবেশে অ্যাপ্লিকেশনের জন্য নির্দিষ্ট কনফিগারেশন যেমন ক্যাশিং, লগিং, এবং ডেটাবেস কানেকশন সেট করতে পারেন। - ফাইল ম্যানেজমেন্ট:
বিভিন্ন কনফিগারেশন ফাইলের মাধ্যমে আপনি প্রোজেক্টের ইনিশিয়াল সেটআপ এবং থার্ড-পার্টি লাইব্রেরি কনফিগারেশনগুলি সহজভাবে পরিচালনা করতে পারেন।
সারমর্ম
routes.rb ফাইল এবং config/ ডিরেক্টরির কনফিগারেশন ফাইল Rails অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি অ্যাপ্লিকেশনের রাউটিং, ডেটাবেস কনফিগারেশন, পরিবেশ সেটিংস, এবং অন্যান্য কাস্টম কনফিগারেশন সেট করতে সাহায্য করে। এগুলোর সঠিক কনফিগারেশন নিশ্চিত করা অ্যাপ্লিকেশনের কার্যক্ষমতা এবং স্থিতিশীলতা উন্নত করতে গুরুত্বপূর্ণ।
Ruby on Rails অ্যাপ্লিকেশনটি ওয়েব ডেভেলপমেন্টের জন্য MVC (Model-View-Controller) আর্কিটেকচার ব্যবহার করে, যেখানে ইউজারের সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত ফাইলগুলো নির্দিষ্টভাবে ভাগ করা হয়। Public ফোল্ডার এবং Static ফাইল ম্যানেজমেন্ট একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে স্ট্যাটিক কনটেন্ট যেমন ইমেজ, CSS, JavaScript এবং অন্যান্য ফাইলগুলির জন্য।
Public ফোল্ডার
Public ফোল্ডার হলো Rails অ্যাপ্লিকেশনের স্ট্যাটিক ফাইলগুলি সংরক্ষণের জন্য ব্যবহৃত একটি ফোল্ডার। এই ফোল্ডারের মধ্যে থাকা ফাইলগুলি সরাসরি ওয়েব সার্ভারের মাধ্যমে অ্যাক্সেস করা যায়। এর মানে, যদি আপনার অ্যাপ্লিকেশনের কোনও ফাইল public/ ফোল্ডারে থাকে, তবে তা সরাসরি ব্রাউজার থেকে অ্যাক্সেস করা সম্ভব।
Public ফোল্ডারের অবস্থান
Rails অ্যাপ্লিকেশনের মূল ডিরেক্টরির মধ্যে একটি public/ ফোল্ডার থাকে। উদাহরণস্বরূপ:
my_app/
├── app/
├── bin/
├── config/
├── db/
├── lib/
├── log/
├── public/
│ ├── images/
│ ├── javascripts/
│ ├── stylesheets/
│ ├── 404.html
│ └── index.html
├── test/
├── tmp/
└── vendor/
Public ফোল্ডারের ফাইল এবং তাদের ব্যবহার
- index.html:
Rails অ্যাপ্লিকেশনটি চলতে থাকা অবস্থায় যদি কোনও রাউট না পাওয়া যায়, তাহলে এটি ডিফল্টভাবেpublic/index.htmlফাইলটি ব্যবহার করে। - 404.html এবং 500.html:
ওয়েব সার্ভার যখন কোনো পৃষ্ঠা খুঁজে পায় না বা সার্ভার এরর ঘটে, তখন এই স্ট্যাটিক পেজগুলি ব্যবহার করা হয়। - Images, JavaScript, CSS ফাইল:
public/images/,public/javascripts/, এবংpublic/stylesheets/ফোল্ডারে ইমেজ, স্ক্রিপ্ট এবং স্টাইলশিট ফাইল রাখা হয়, যাতে সরাসরি ব্যবহারকারীর ব্রাউজার থেকে অ্যাক্সেস করা যায়। যেমন:public/images/logo.pngpublic/javascripts/application.jspublic/stylesheets/application.css
Static ফাইল ম্যানেজমেন্ট
Rails অ্যাপ্লিকেশন এ স্ট্যাটিক ফাইল গুলি বিশেষভাবে পরিচালিত হয়। Static Assets এর মধ্যে সাধারণত এমন ফাইল থাকে যা ডায়নামিক নয়, অর্থাৎ এগুলো কখনও পরিবর্তিত হয় না এবং সরাসরি ব্রাউজারের মাধ্যমে অ্যাক্সেস করা যায়। Rails ফ্রেমওয়ার্ক স্ট্যাটিক ফাইলগুলিকে আরও ভালোভাবে পরিচালনা করার জন্য কিছু টুল প্রদান করে, যার মাধ্যমে এগুলিকে আরও অপ্টিমাইজ করা যায়।
Asset Pipeline (Sprockets)
Rails অ্যাপ্লিকেশনগুলোতে Asset Pipeline ব্যবহৃত হয়, যা স্ট্যাটিক ফাইল যেমন CSS, JavaScript এবং ইমেজগুলির অপ্টিমাইজেশনে সাহায্য করে।
- Sprockets:
এটি Rails অ্যাপ্লিকেশনে CSS, JavaScript এবং ইমেজ ফাইলগুলিকে কমপ্রেস এবং মিনি-ফাই করা, ক্যাশিং, এবং ডিপেন্ডেন্সি ম্যানেজমেন্ট করতে ব্যবহৃত হয়।
Asset Pipeline কনফিগারেশন
Rails-এ config/environments/production.rb ফাইলে Asset Precompiling কনফিগার করা হয়, যাতে প্রোডাকশন এনভায়রনমেন্টে ফাইলগুলো অপ্টিমাইজড হয় এবং সেগুলি দ্রুত লোড হয়।
# Enable serving of assets
config.serve_static_assets = true
# Precompile additional assets (application.js, application.css, and all non-JS/CSS in app/assets)
config.assets.precompile += %w( admin.js admin.css )
স্ট্যাটিক ফাইলের URL
Rails অ্যাপ্লিকেশনে স্ট্যাটিক ফাইলের জন্য সাধারণত public ফোল্ডারের মাধ্যমে সরাসরি URL নির্ধারণ করা হয়। উদাহরণস্বরূপ:
image:
public/images/logo.pngফাইলটি অ্যাক্সেস করা যাবে URL এর মাধ্যমে:http://your-domain.com/images/logo.pngCSS/JS:
স্ট্যাটিক CSS এবং JS ফাইলের URL হতে পারে:http://your-domain.com/stylesheets/application.css
Rails 5 এর পরবর্তী Asset Management
Rails 5 এবং তার পরবর্তী সংস্করণগুলিতে Webpacker টুলটি অন্তর্ভুক্ত করা হয়েছে, যা JavaScript এবং CSS ফাইল ম্যানেজমেন্টের জন্য আরো আধুনিক এবং শক্তিশালী উপায় সরবরাহ করে। Webpacker ডিফল্টভাবে স্ট্যাটিক ফাইলগুলির জন্য Webpack ব্যবহার করে, যা উন্নত পারফরম্যান্স, মডুলার কোড এবং আধুনিক JavaScript টুলিং প্রদান করে।
Webpacker সেটআপ
Webpacker দিয়ে স্ট্যাটিক ফাইল ব্যবস্থাপনা করতে,
webpackerজেম ইনস্টল করতে হবে:bundle add webpacker- এর পর, Webpacker এর সাহায্যে JavaScript এবং CSS ফাইল কম্পাইল করা এবং অপ্টিমাইজ করা সম্ভব হয়।
Static ফাইল ব্যবস্থাপনার গুরুত্বপূর্ণ বিষয়
- Asset Precompilation:
প্রোডাকশন এনভায়রনমেন্টে স্ট্যাটিক ফাইলগুলি আগে থেকেই প্রিকম্পাইল করা হয়, যাতে ফাইল লোড করার সময় পারফরম্যান্স ভালো থাকে। - Caching:
স্ট্যাটিক ফাইলের ক্যাশিং ব্যবস্থাপনা গুরুত্বপূর্ণ। প্রতিটি স্ট্যাটিক ফাইলের জন্য একটি cache-busting স্ট্রাটেজি প্রয়োজন, যাতে ফাইল পরিবর্তনের পর নতুন ফাইল লোড হয়। - Compression:
স্ট্যাটিক ফাইলগুলো কম্প্রেস এবং মিনিফাই করতে হবে যাতে ওয়েব পেজ লোডিং আরও দ্রুত হয়।
সারমর্ম
Rails অ্যাপ্লিকেশনগুলিতে public ফোল্ডার এবং static ফাইল ম্যানেজমেন্ট অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। স্ট্যাটিক ফাইলগুলো সরাসরি অ্যাক্সেসযোগ্য এবং Rails অ্যাপ্লিকেশনটি এগুলির অপ্টিমাইজেশনে সাহায্য করতে Asset Pipeline এবং Webpacker এর মতো টুল সরবরাহ করে। এই ব্যবস্থাপনার মাধ্যমে সাইটের পারফরম্যান্স বৃদ্ধি পায় এবং অ্যাপ্লিকেশন দ্রুত লোড হয়।
Read more