Обзор
Ruby — выразительный язык, получивший широкое распространение в веб-разработке. На его основе были созданы различные фреймворки, каждый из которых подходит для определённых задач.
В этой статье рассмотрим наиболее популярные Ruby-фреймворки и разберем, в каких случаях стоит выбрать каждый из них.
1. Ruby on Rails
Самый популярный и функциональный фреймворк.
Плюсы:
- Подход “соглашение вместо конфигурации”
- Встроенный ORM (ActiveRecord), миграции, почта и многое другое
- Большое сообщество и готовые библиотеки
Минусы:
- Слишком тяжёл для небольших проектов
- Порог входа для новичков
Пример:
# config/routes.rb
Rails.application.routes.draw do
get '/hello', to: 'welcome#index'
end
# app/controllers/welcome_controller.rb
class WelcomeController < ApplicationController
def index
render plain: "Hello from Rails!"
end
end
2. Sinatra
Минималистичный DSL для быстрого создания веб-приложений.
Плюсы:
- Минимализм и простота
- Быстрая разработка
- Идеален для API и микросервисов
Минусы:
- Нет встроенной поддержки БД и шаблонов
- Не подходит для больших проектов
Пример:
require 'sinatra'
get '/' do
"Hello from Sinatra!"
end
3. Hanami
Современный и модульный Ruby-фреймворк.
Плюсы:
- Чистая архитектура
- Лёгкий и модульный
- Использует ROM для работы с данными
Минусы:
- Маленькое сообщество
- Новая архитектура требует изучения
Пример:
# config/routes.rb
get '/hello', to: 'home#index'
# apps/web/controllers/home/index.rb
module Web::Controllers::Home
class Index
include Web::Action
def call(params)
self.body = 'Hello from Hanami!'
end
end
end
Таблица сравнения
Фреймворк | Лучше всего подходит для | Плюсы | Минусы |
---|---|---|---|
Rails | Полноценные веб-приложения | Богатый функционал | Тяжеловесный, жёсткий |
Sinatra | Маленькие проекты и API | Простота и скорость | Мало встроенных решений |
Hanami | Чистая архитектура | Модульность, современность | Маленькое сообщество |
Заключение
- Используйте Rails, если вам нужно всё из коробки.
- Выбирайте Sinatra для лёгких сервисов и API.
- Пробуйте Hanami, если важна архитектурная чистота.