Статьи

JumpCast: начни с Синатры

Начните с Синатры

Чтобы узнать больше о подобных JumpCasts, посетите Learnable

Джесс: Я здесь с Джоном Бартоном, одним из основателей Goodfil.ms. Он здесь, чтобы поговорить с нами о Синатре сегодня. Что вы можете рассказать нам о Синатре?

Джон: Об этом рассказывать особо нечего, но по сути это просто очень легкий веб-фреймворк, написанный на Ruby, который делает веб-приложения действительно очень простыми.

Джесс: Я понимаю, что Синатра не использует типичный шаблон MVC, который используют другие фреймворки. На чем это сосредоточено вместо этого?

Джон: На ​​самом деле это совсем не нацелено. Это действительно очень легкий. Большинство Ruby-программ, если вы знакомы с платформой Rails, которая является самоуверенной программной средой для разработки веб-приложений, и Sinatra почти полная противоположность этому, поскольку она выполняет наименьший объем работы, чтобы помочь вам публиковать веб-страницы без мешать с чем-либо еще. Есть некоторый недостаток, заключающийся в том, что вы можете писать очень не поддерживаемые, ужасные приложения, потому что они не предоставляют такую ​​структуру для вас, но дают вам свободу
делать много вещей, которые довольно сложно сделать в больших средах MVC.

Джесс: Очевидно, что Sinatra довольно маленький по размеру с точки зрения строк кода. Почему именно это?

Джон: Ну, единственная причина, по которой он такой маленький, в том, что он действительно сфокусирован. Это на самом деле не так много. На самом деле он намного меньше, чем был, когда я впервые начал его использовать, потому что со временем люди оттачивали его назначение и сокращали его до минимума, вам нужно создавать небольшие веб-приложения, хотя, если вы обнаружите, что есть вещи, которые вам нужно сделать, и там нет ничего, что могло бы помочь, на самом деле есть множество стандартных пакетов для установки, например, Sinatra-contrib — это главная жемчужина, которая включает в себя такие вещи, как обработка файлов cookie, так что это может помочь нам в этом, и несколько шаблонов представления в стиле Rails, чтобы вы могли написать более чистый HTML-код для своего приложения.

Джесс: Круто. Так для чего же вы будете использовать Синатру?

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

Второе, что мне действительно нравится, это создание MVP веб-приложений. Я знаю, что для людей довольно популярно использовать WordPress, чтобы раскрутить пару целевых страниц и форму регистрации по электронной почте и опробовать некоторые маркетинговые идеи, в то время как я очень предпочитаю использовать Синатру для этого, потому что тогда, если это себя зарекомендует, это на самом деле действительно легко развить
Приложение Sinatra превращается в более крупное приложение, использующее другие платформы Ruby, не теряя при этом всю работу, которую вы уже вложили.

Джесс: Какие навыки тебе нужны, чтобы использовать Синатру?

Джон: Два основных навыка, которые вам понадобятся, чтобы иметь возможность использовать Sinatra любым осмысленным способом, — это немного знания Ruby и немного знания HTML. Поскольку это такая чистая и простая в использовании инфраструктура, вы не
на самом деле должны иметь очень продвинутые навыки, чтобы работать с ним. На самом деле, я считаю, действительно хорошая среда для обучения людей тому, как создавать веб-приложения, потому что она имеет наименьшее представление об идее. «Вот как
вы попадаете на веб-страницу, и это то, что возвращается с другой стороны », а затем вы можете узнать больше навыков, используя инструмент, а затем перейти к одной из больших платформ.

Джесс: Каковы некоторые примеры Синатры в дикой природе, тогда?

Джон: Есть множество примеров, о которых вы никогда не слышали, потому что многие люди просто используют это для хобби-проектов. И другая причина, GitHub — огромный пользователь Синатры. На их главном сайте есть что-то вроде 22 приложений Sinatra, соединенных вместе. Поскольку это небольшая структура, она действительно хороша для изоляции действительно небольших блоков, поэтому это действительно популярный инструмент для внутренних инструментов, если вы хотите создать систему администрирования или небольшой веб-сервис для обработки чего-либо с помощью API. Это часто за кадром, так что вы на самом деле не видите этого.

Джесс: Круто. У вас есть примеры Синатры, которые вы собрали?

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

Джесс: Отлично. Давайте проверим это.

Джон: ОК. Давайте посмотрим на этот пример Синатры. Я установил Sinatra с помощью Bundler здесь, так что я просто собираюсь запустить наш сервер, запустив «bundle exec ruby ​​app.rb». Так что это работает сейчас, и поэтому давайте посмотрим, что у нас есть. Это небольшая маркетинговая целевая страница, которая случайным образом генерирует ключевое слово для описания нашего продукта и позволяет вам зарегистрироваться по адресу электронной почты. И мы подтверждаем, что это где-то сохраняется, и мы показываем милое маленькое сообщение «спасибо». Итак, давайте посмотрим на код, который делает это возможным. Наше приложение Sinatra имеет этот файл, который определяет сам код Sinatra, и папку здесь для наших шаблонов представления HTML.

Если посмотреть здесь, у нас есть небольшой пример, просто для настройки среды Sinatra, а затем Sinatra DSL для определения двух наших конечных точек. Первая, являющаяся страницей индекса, — это косая черта для сервера, а другая — то, где форма анализирует свои данные. Все, что мы здесь делаем, это говорим Sinatra прослушать стандартную обратную косую черту запроса get, выбрать случайное ключевое слово и вывести наш шаблон представления. Загружаем index.erb. Это наш шаблон представления, который вы можете увидеть здесь, встраивая произвольно выбранное ключевое слово, а затем сохраняя его в
форма, чтобы мы знали, когда люди регистрируются, на какое ключевое слово они отвечают.

Вы заметите, что вы не увидите тег HTML или CSS в этом файле. Это потому, что Sinatra автоматически ищет файл с именем layout.erb и оборачивает содержимое шаблона всем, что находится в файле макета, поэтому вы можете видеть здесь, что мы определяем все наши стандартные документы, а затем здесь, где ключевое слово yield — это место, где будет выводиться содержимое запрошенного нами шаблона. Вот как мы показываем наш контент в Синатре, но давайте посмотрим, как мы получаем доступ к данным из формы. Все, что приходит из формы, каждый параметр данных HTML-поста помещается здесь в хэш params, так что вы можете видеть, что мы назначаем переменную email и ключевое слово, и мы извлекаем это из email и ключевого слова здесь и здесь.

Если мы еще раз посмотрим на индекс, вы увидите формы ввода, имена, ключевое слово и адрес электронной почты. Это автоматически генерируется из вашей разметки. Затем мы делаем скучный Ruby здесь, просто для того, чтобы записать нашу электронную почту, ключевое слово и текущее время нашего файла, и снова отобразить шаблон, поэтому мы должны взглянуть на наш CSV и увидеть адрес электронной почты, который мы зарегистрировали ранее. Это довольно наивный подход к запуску A / B-теста в закрытой бета-форме регистрации, но, надеюсь, вы сможете использовать его в качестве шаблона для начала работы с Sinatra.

Большое спасибо за просмотр. Если вы хотите познакомиться с Sinatra, обязательно ознакомьтесь с нашей книгой « Start Start Sinatra » Даррена Джонса.