Типова структура веб - додатку на Sinatra

Для веб-додатку на Sinatra зазвичай використовується структура, яка дозволяє краще організувати код та легше його розширювати. Ось приклад такої структури:

my_sinatra_app/
│
├── Gemfile
├── Gemfile.lock
├── main.rb
├── config/
│   ├── database.rb
│   └── environment.rb
├── controllers/
│   ├── application_controller.rb
│   ├── users_controller.rb
│   └── ...
├── models/
│   ├── user.rb
│   ├── post.rb
│   └── ...
├── views/
│   ├── layout.erb
│   ├── users/
│   │   ├── index.erb
│   │   ├── show.erb
│   │   └── ...
│   └── ...
├── public/
│   ├── css/
│   ├── js/
│   └── ...
└── spec/
    ├── spec_helper.rb
    ├── controllers/
    ├── models/
    └── ...

Ось пояснення для кожного елементу цієї структури:

  • Gemfile та Gemfile.lock визначають залежності та їх версії.
  • main.rb - це основний файл додатку, де описана конфігурація, налаштування маршрутів та інша основна логіка.
  • config/ - папка для конфігураційних файлів. database.rb може містити конфігурацію бази даних, а environment.rb може завантажувати різні конфігураційні параметри.
  • controllers/ - папка для контролерів. Кожен контролер відповідає за обробку запитів для певної частини функціональності додатку. Наприклад, users_controller.rb може містити обробку запитів, що стосуються користувачів.
  • models/ - папка для моделей. Тут можуть бути описані класи, які відображають дані вашого додатку та взаємодіють з базою даних.
  • views/ - папка з шаблонами. Вона може бути розділена на підпапки для кращої організації, наприклад, users/ для шаблонів, що стосуються користувачів.
  • public/ - папка для статичних файлів, таких як CSS, JavaScript, зображення.
  • spec/ - папка для модульних тестів. Може бути розділена на підпапки для контролерів, моделей та ін.

Ця структура дозволяє краще організувати код вашого додатку, розділяючи його на логічні компоненти та забезпечуючи легшу розширюваність та підтримку.

Декілька прикладів шаблонів структури додатків на Sinatra:

  1. MVC (Model-View-Controller)
  • Models. Класи, що відповідають за роботу з даними, такими як база даних. Файли можуть бути організовані в папці models/.
  • Views. HTML-шаблони, що відображають дані користувачам. Вони зазвичай знаходяться в папці views/ і можуть бути організовані у підпапках за функціональністю або областями додатку.
  • Controllers. Логіка, що керує відображенням даних і взаємодіє з моделями та видами. Контролери можуть знаходитися в папці controllers/.
  1. Спрощена структура
  • Routes. Усі маршрути та їх обробники зберігаються безпосередньо в файлі app.rb або розділені на кілька файлів у папці routes/.
  • Models/Views/Controllers. Можна об’єднати всі класи моделей, шаблони та контролери у відповідні папки, але це буде менш розділена структура порівняно з MVC.
  1. Компонентна структура
  • Компоненти (Components). Розділення функціональності на незалежні компоненти, які містять свої власні файли моделей, видів та контролерів. Кожен компонент може мати власну папку з відповідними файлами.
  1. Ієрархічна структура
  • Секції або Модулі. Розділення додатку на різні секції або модулі, які містять власні файли моделей, контролерів та видів. Кожна секція може мати власну папку в кореневій структурі проекту.

Ці приклади шаблонів можуть бути поєднані та модифіковані відповідно до потреб конкретного додатку та вподобань розробника.