Установка и запуск Sinatra

Sinatra – это простой легковесный фреймворк, написанный в Ruby.

Примечание: Для выполнения руководства нужно установить Ruby и RubyGems (об этом речь пойдёт в отдельном разделе), а также уметь с ними обращаться. Рекомендуется использовать RVM.

Краткий обзор Sinatra

Как и Ruby on Rails, Sinatra является веб-фреймворком. В отличие от Ruby on Rails, Sinatra намного легче, использует меньше ресурсов и предоставляет более точный контроль над веб-приложением. Кроме того, у него нет встроенной базы данных или рендеринга – все это делается вручную.

Преимущества Sinatra

Этот фреймворк быстрый, простой и производительный. Однако он требует больше работы и внимания от разработчика (поскольку вероятность допустить ошибку высока).

Sinatra, как правило, используется для построения небольших веб-приложений без наворотов (список разработанных в нем проектов можно просмотреть здесь). Часто в нём собирают специализированные приложения. Sinatra позволяет даже собрать простой фронт-энд Jekyll.

Установка Ruby и RubyGems

Ruby и RubyGems проще всего установить при помощи инструмента RVM (Ruby Version Manager). RVM позволяет устанавливать и управлять несколькими версиями Ruby с индивидуальными gemset-ами в рамках одной системы. Чтобы установить последнюю версию RVM и Ruby 2.0.0, запустите:

\curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0

Примечание: Чтобы установить другую версию, просто укажите её номер.

Эта команда установит RVM только для пользователя, запустившего её. Чтобы установить RVM глобально, добавьте sudo перед bash:

\curl -L https://get.rvm.io | sudo bash -s stable --ruby=2.0.0

Если двоичные файлы Ruby доступны для вашей системы или облачного сервера (что вероятнее всего), то они будет загружены и установлены. В противном случае нужно собрать Ruby из исходников. Это может занять некоторое время.

После завершения установки выйдите и снова войдите в систему. после этого будет предложено запустить команду:

source ~/.rvm/scripts/rvm

Эта команда загружает RVM в текущий терминал. Если всё работает должным образом, вам не придётся запускать эту команду для каждого нового терминала. Однако если программа постоянно предлагает запускать её, добавьте её в файл запуска (.bashrc или .zshrc).

Установка gem-а Sinatra

Как и любой другой gem, Sinatra устанавливается при помощи простой команды:

gem install sinatra

Это всё, что нужно. Теперь фреймворк Sinatra установлен.

Начало работы с Sinatra

Теперь попробуйте создать простое и понятное приложение в Sinatra. Приложения заключены в классы Ruby. Перед вами простое приложение из двух файлов:

# app.rb
require 'sinatra'
class HelloWorldApp < Sinatra::Base
get '/' do
"Hello, world!"
end
end
# config.ru
require './app'
run HelloWorldApp

Внеся соответствующий код в файлы app.rb и config.ru (при помощи любого удобного текстового редактора), запустите приложение из папки (к примеру: /home/user/code/my_sinatra_app):

rackup

Это запустит библиотеку WEBrick, которая обслуживает приложение. Обратите внимание: WEBrick сообщает IP и порт, которые она обслуживает; запишите эти данные. Получить доступ к приложению можно по:

http://IP:порт

Анализ кода простого приложения Sinatra

В Sinatra каждый блок get (или post, put, и т.д.) определяет каждый маршрут ответ приложения на конкретные запросы HTTP. В данном случае код определяет, что произойдёт, когда пользователь запрашивает корневой каталог приложения (или /).

Параметры приложения Sinatra

Теперь попробуйте задать этому приложению параметр.

# app.rb
require 'sinatra'
class HelloWorldApp < Sinatra::Base
get '/' do
"Hello, world!"
end
get '/:name' do
"Hello, #{params[:name]}!"
end
end

Параметры URL задаются при помощи :param и хранятся в params в коде Ruby.

Этот код определяет два маршрута: один к корневому каталогу (/), а второй – к каталогу /:name. Однако это можно свести к одному маршруту, который будет проверять на наличие параметра name.

# app.rb
require 'sinatra'
class HelloWorldApp < Sinatra::Base
get '/?:name?' do
"Hello, #{params[:name] ? params[:name] : 'world'}!"
end
end

Этот код несколько сложнее. Чтобы обозначить опциональные параметры, окружите их вопросительными знаками. Затем используется тернарный оператор, который ищет params[:name].

Но как структурировать приложение, чтобы уточнить, кому адресовано приветствие? Рассмотрите следующий код:

# app.rb
require 'sinatra'
class HelloWorldApp < Sinatra::Base
get '/:greeting/?:name?' do
"#{params[:greeting]}, #{params[:name] ? params[:name] : 'world'}!"
end
end

Теперь просто откройте http://yoursever:port/Aloha/Timothy, и вы увидите, что приветствие адресовано Mr Timothy.

Примечание: Это руководство охватывает только основы работы с фреймворком Sinatra. Боле подробную информацию можно найти в этом руководстве.

Tags: , , ,

Добавить комментарий