Rack обеспечивает минимальный интерфейс между веб-серверами, поддерживающими Ruby и Ruby.
Интерфейс предполагает, что у вас есть объект, который отвечает на метод вызова (например, proc) и возвращает массив с:
- Код ответа HTTP
- Хэш заголовков
- Тело ответа, которое должно отвечать на каждый
Вы можете запуститьбазовый сервер Rack с командой rackup
, которая будет искать файл config.ru
в текущем каталоге.
Вы можете создать минимальный сервер hello world с помощью:
# config.ru
run Proc.new { |env| ['200', {'Content-Type' => 'text/html'}, ['Hello World']] }
# run this with the `rackup` command
Начиная с Sinatraтак же, как Rails основывается на Rack, он использует rackup
для взаимодействия между сервером и фреймворком.Таким образом, config.ru
является точкой входа в любую основанную на Rack программу.
Что означает, что он загружает приложение и передает класс Sinatra::Application
в стойку, которая имеет метод класса call
.
Sinatra::Application
затем отвечает за принятие входящего запроса (env) и передача его маршрутам, которые предоставляет ваше приложение, а затем возвращение кода ответа, заголовков и тела ответа.