Для веб-додатку на 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/ - папка для модульних тестів. Може бути розділена на підпапки для контролерів, моделей та ін.
Ця структура дозволяє краще організувати код вашого додатку, розділяючи його на логічні компоненти та забезпечуючи легшу розширюваність та підтримку.