0Pricing
Ruby Academy · Урок

Основы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы Sinatra
  2. Маршруты и параметры
  3. API JSON
  4. Промежуточное ПО и Rack
← Назад к Ruby Academy