Основы Sinatra
Лёгкие веб-приложения
«Основы Sinatra» — бесплатный урок Ruby Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое Sinatra
Sinatra — это лёгкий DSL для создания веб-приложений на Ruby с минимальными усилиями.
- Нет тяжёлых соглашений, как в Rails
- Маршруты определяются напрямую в одном файле
- Идеально подходит для небольших приложений, API и прототипов
Вы описываете методы HTTP и пути, а затем возвращаете тело ответа.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endУстановка Sinatra
Sinatra — это гем. Установить его можно с помощью команды gem или через Gemfile.
gem install sinatra- Или добавьте
gem 'sinatra'в файл Gemfile и выполнитеbundle install
Запустите приложение с помощью ruby app.rb, и по умолчанию оно будет обслуживать запросы на порту 4567.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'Ваш первый маршрут
Маршрут связывает метод HTTP с путём URL и блоком. Возвращаемое значение блока становится телом ответа.
get,post,put,deleteсоответствуют методам HTTP- Последнее выражение в блоке отправляется клиенту
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endВозврат HTML
Поскольку возвращаемое значение — это обычная строка, Вы можете напрямую вернуть необработанный HTML.
- Это удобно для быстрых страниц без механизма шаблонов
- Для настоящих приложений предпочитайте представления ERB или HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endМоделирование ответа на обычном Ruby
До подключения HTTP Вы можете смоделировать результат работы обработчика с помощью обычного метода. Именно эту логику вызывал бы маршрут.
- Не помещайте бизнес-логику в блоки маршрутов
- Это позволяет проверять код без сервера
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')Методы HTTP
Sinatra поддерживает все распространённые методы HTTP в качестве методов маршрутов.
getсчитывает данныеpostсоздаёт данныеput/patchобновляют данныеdeleteудаляет данные
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endЗадание кодов состояния
Вы управляете кодом состояния HTTP с помощью вспомогательного метода status.
status 404задаёт состояние «Не найдено»status 201сообщает о созданном ресурсе- По умолчанию используется 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endНастройка с помощью set
Sinatra настраивается с помощью set, enable и disable.
set :port, 8080изменяет порт, на котором приложение принимает соединенияset :bind, '0.0.0.0'разрешает внешние подключенияenable :loggingвключает журналы запросов
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endПредварительные фильтры
Предварительный фильтр выполняется перед каждым подходящим запросом. Он идеально подходит для подготовки, например аутентификации или заголовков содержимого.
- Он выполняется в том же контексте, что и маршруты
- Он может читать и изменять
paramsи заголовки ответа
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endМодульные приложения
Для крупных проектов используйте модульный стиль, создавая подкласс Sinatra::Base.
- Он изолирует несколько приложений
- Такое приложение проще подключать под Rack
- Вызовите
run!, чтобы запустить его вручную
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!Локальное моделирование маршрутизатора
Чтобы понять эту концепцию, Вы можете воспроизвести логику маршрутизации Sinatra с помощью простого диспетчера на основе хеша.
- Ключами служат пути, а значениями — процедуры-обработчики
- Поиск возвращает тело ответа
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callБыстрая проверка
Проверьте, насколько хорошо Вы понимаете основы Sinatra.
Итоги
Вы изучили основы Sinatra:
- Sinatra — это лёгкий веб-DSL, устанавливаемый как гем
- Маршруты связывают метод HTTP с путём и блоком
- Возвращаемое значение блока является телом ответа
- Используйте
status,setи фильтрыbeforeдля управления - Модульные приложения создают подкласс
Sinatra::Base
Далее Вы будете обрабатывать динамические маршруты и параметры.
Часто задаваемые вопросы
Урок «Основы Sinatra» бесплатный?
Да — полный текст урока «Основы Sinatra» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы Sinatra»?
Лёгкие веб-приложения Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы Sinatra»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Sinatra
- Маршруты и параметры
- API JSON
- Промежуточное ПО и Rack