Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

в 13:34, , рубрики: dsl, framework, ruby, sinatra, метки: , , ,

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство Доброго времени суток!

Что такое Sinatra

Sinatra — маленький, но довольно интересный DSL (Domain-specific language) фреймворк, написанный на Ruby. В отличие от Ruby on Rails он не следует типичному паттерну MVC (Model — View — Controlller). Sinatra создавался для того, чтобы «программист смог быстро создать веб приложение, написанное на Ruby с минимальными усилиями.

Для того, чтобы воспользоваться Sinatra нам неорбходимо его установить. Сделать это можно следующей командой в RubyGems:

gem install sinatra

Также нам понадобится гем под названием Shotgun. Нужен он нам для того, чтобы лишний раз не перезагружать сервер вручную. Shotgun сделает это за нас. Давайте установим его:

gem install shotgun

Ну вот и всё! Всё необходимое для работы у нас есть. Настал момент для творчества. Приступим…

Hello, Sinatra!

А напишем мы простенькое приложение, которое приветствует само себя. Искренне надеюсь, что Фрэнк не перевернётся в гробу. Итак, вот оно, наше приложение:

require "sinatra"  get "/" do      "Hello, Sinatra!" end 

Осталось только запустить сервер. Сделать это можно набрав следующую команду:

ruby -rubygems path_to_fileapp.rb

Теперь мы можем открыть браузер. В омнибокс необходимо набрать адрес localhost:4567. Вуаля!

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

Поздравляю! Только что мы написали первое веб приложение с помощью Sinatra.

Разбор полётов

Несмотря на то, что это был простейший пример, не мешало бы разобраться что выполняет наш код.
С начала хотелось заметить, что при разработке веб приложений я использую Ruby версии 1.9. В случае, если вы используете версию 1.8., вам необходимо добавить ещё одну строчку в ваш код. Вот она:

require "rubygems" 

Двигаемся дальше. Мы говорим нашему приложению, что если пользователь в адресной строке вбивает адрес нашего сайта, то он попадает именно на эту страницу, т.е. на главную, где мы приветствуем Фрэнка. В случае, если пользователь указывает в адресной строке, например, /about, то ему выдаётся следующая ошибка:

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

Давайте же обработаем ошибку Not Found. Сделать это можно следующим способом:

not_found do      status 404      "Something wrong! Try to type URL correctly or call to UFO." end 

Теперь наберём в адресной строке localhost:4567/about и увидим нашу с вами страничку, которая сообщает пользователю о том, что случилось что-то не то.

Hello, %username%

Пора бы вспомнить о том, что мы познакомились с Фрэнком, а он с нами нет. Не дай Бог, конечно. Но заставить наш браузер поприветствовать нас мы можем. Сделать это можно с помощью параметра name. Его обработка будет выглядеть так:

get "/hello/:name" do      "Hello, #{params[:name]}." end 

Осталось лишь набрать localhost:4567/hello/your_name и вы увидите приветствие в ваш адрес. Вот, например:

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

Я там, где ты

Именно этим выражением мы можем охарактеризовать ситуацию, когда нам необходимо, например, отдавать пользователю лишь одну страничку, но вне зависимости от того, какой адрес он наберёт. Делается это путём указания звёздочки после слэша. Вот так:

get "/*" do      "It's the main page of this site you can see right now!" end 

Теперь куда бы вы не хотели попасть, вы будете видеть одну и ту же страницу. Кстати, вот и она:

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство
Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство
Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство
Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

Значение параметра, заданного в URI мы можем получить с помощью аттрибута splat. Вот так вот:

get "/*" do      "I don't know what is the #{params[:splat]}. It's what you typed." end 

Вуаля! Чтобы мы не набрали в адресной строке, а увидим набранный URI.

Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство
Ruby / Поём вместе с Sinatra. Часть первая. Первое знакомство

Заключение

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

Куда двигаться дальше

Введение в Sinatra.
Официальный сайт Sinatra.
Singing with Sinatra.

Автор: krovatti

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js