Vim для разработки на ruby с sinatra и git: практический учебный проект

С Vim удобно программировать (часть III)

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

1. Учебный проект на Ruby + Sinatra

Sinatra - минималистичный фреймворк для Ruby, идеально подходящий для создания небольших веб‑приложений и учебных примеров. Предположим, что Ruby у вас уже установлен, Sinatra добавлен (как гем), и базовые шаги установки проблем не вызывают.

Задача: cделать простейший учебный сайт на связке Ruby + Sinatra (примерно как в одном из уроков по Ruby). Структура проекта будет очень простой: один ruby‑файл с логикой приложения и одно представление (шаблон) с HTML‑страницей, которая выводит заголовок:

```html

Hello!

```

Структура проекта

Создадим папку проекта, допустим, с именем `19`. Внутри неё будет размещён основной файл приложения:

- `app1.rb` - главный скрипт Sinatra
- каталог `./views` - папка для представлений (шаблонов)
- файл `./views/index.erb` - единственный шаблон с нашим "Hello!"

Дерево каталогов в итоге должно выглядеть так:

```text
19/
app1.rb
views/
index.erb
```

Используем файл проекта Vim

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

1. Переходим в каталог `19`.
2. Запускаем Vim командой (из терминала) вида:

```bash
vim project
```

Здесь `project` - это имя текстового файла, в котором мы будем хранить список файлов проекта.

3. Внутри Vim добавляем в этот файл строку:

```text
app1.rb
```

4. Сохраняем изменения и выходим:

```vim
:wq
```

5. Снова запускаем:

```bash
vim project
```

Теперь Vim откроет "проект" и автоматически создаст вкладку для `app1.rb` (если настроен соответствующий сценарий или плагин; предположим, что это уже сделано, как описывалось ранее).

Наполняем основной файл приложения

Откройте вкладку с `app1.rb` и добавьте в него минимальный код Sinatra:

```ruby
require 'sinatra'

get '/' do
erb :index
end
```

Здесь:

- `require 'sinatra'` - подключение фреймворка;
- маршрут `get '/' do ... end` описывает реакцию на запрос к корню сайта;
- `erb :index` означает, что нужно отрендерить шаблон `index.erb` из каталога `views`.

После этого сразу становится ясно, что нам не хватает файла представления `./views/index.erb`.

Добавляем шаблон в проект

Чтобы Vim начал учитывать и файл шаблона, просто допишем его путь во всё тот же файл проекта:

1. Внутри Vim откройте вкладку с файлом `project` (или буфер, где он лежит).
2. Добавьте вторую строку:

```text
./views/index.erb
```

3. Сохраните все открытые файлы:

```vim
:wa
```

4. Выйдите из Vim целиком:

```vim
:qa
```

Чтобы выполнять эти команды быстрее, удобно сделать сопоставления (маппинги) для режима вставки, например:

```vim
inoremap :wa
inoremap :qa
```

Теперь сочетание `Ctrl-w` сохранит все открытые файлы, а `Ctrl-q` завершит работу Vim, не выходя из режима вставки.

Затем снова запускаем Vim командой:

```bash
vim project
```

Теперь редактор увидит вторую строку в файле проекта и откроет ещё одну вкладку - уже для `./views/index.erb`.

Верстаем представление

Переходим во вкладку с `index.erb` и добавляем туда HTML‑код:

```html

Hello!

```

Шаблон готов, структура приложения завершена.

Запуск приложения прямо из Vim

Чтобы не прыгать каждый раз в терминал, удобно настроить запуск проекта по горячей клавише в Vim, например по `Ctrl-F5`. Конкретная команда может быть оформлена по‑разному, но по сути она должна запускать:

```bash
ruby app1.rb
```

После запуска Sinatra, по умолчанию, поднимает локальный сервер на порту 4567. Остаётся открыть браузер и перейти на страницу:

```text
localhost:4567
```

Вы увидите страницу с заголовком "Hello!". Останавливаем сервер `Ctrl-c` в терминале - и возвращаемся обратно в уже открытый Vim.

Таким образом, весь цикл - редактирование кода, запуск приложения, проверка результата и возврат в редактор - выполняется практически без трения. Постепенно такой способ работы начинает напоминать REPL, встроенный прямо в Vim: вы меняете код, быстро перезапускаете приложение и сразу видите результат.

2. Интеграция с Git: фиксируем изменения без лишних движений

Git - стандартный инструмент контроля версий, и большинство разработчиков знакомы хотя бы с базовым набором команд. Посмотрим, как можно использовать уже существующий файл `project`, чтобы упростить одну из довольно рутинных операций - добавление файлов в индекс.

Инициализация репозитория

Перейдите в корень каталога проекта `19` и выполните обычную инициализацию:

```bash
git init
```

Теперь в этом каталоге создан новый Git‑репозиторий.

Автоматическое добавление всех файлов проекта

Логично, что отслеживать в Git нужно именно те файлы, которые мы включили в проект Vim: `app1.rb`, `./views/index.erb` и при необходимости другие, которые будут со временем появляться. Вместо того чтобы перечислять каждый файл руками, можно использовать содержимое файла `project`:

```bash
git add `cat project`
```

Команда ```cat project``` вернёт список файлов, а `git add` получит его как аргументы. В результате все файлы, которые вы считаете частью проекта (и уже внесли в `project`), автоматически попадут в индекс Git.

Проверим статус:

```bash
git status
```

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

Дальше можно работать в стандартном режиме:

- создать первый коммит;
- при необходимости настроить удалённый репозиторий;
- регулярно фиксировать изменения по мере развития проекта.

3. Почему такая связка удобна в повседневной работе

Комбинация Vim + Sinatra + Git в этом учебном примере показывает несколько важных принципов эффективной работы:

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

2. Минимум контекста, максимум концентрации.
Вы не отвлекаетесь на постоянное переключение между IDE, терминалом, файловым менеджером и прочими окнами: подавляющее большинство действий делается из одного интерфейса.

3. Файл проекта как единый источник правды.
Тот же список файлов использует и Vim, и Git. Если вы добавили что‑то в проект, это автоматически может быть добавлено в репозиторий. Меньше дублирующих действий - меньше шансов что‑то забыть.

4. Быстрая обратная связь.
При запуске Sinatra из Vim и последующей проверке результата в браузере создаётся короткий цикл "правка - запуск - проверка". Это особенно важно на ранних этапах обучения, когда хочется как можно быстрее видеть результат своих действий.

4. Расширение проекта: шаги для дальнейшего развития

После того как базовый пример с "Hello!" заработал, логично двигаться дальше и использовать те же приёмы Vim для более сложных задач:

- Добавить новые маршруты в Sinatra, например `/about`, `/contacts`;
- В папке `views` создать дополнительные шаблоны: `about.erb`, `contacts.erb`;
- В файл `project` вписать новые представления, чтобы Vim автоматически подхватил их во вкладки;
- С помощью уже знакомого трюка `git add `cat project`` зафиксировать расширившийся набор файлов в Git.

Так шаг за шагом можно строить простое, но структурированное приложение, не усложняя инфраструктуру и не перегружая себя тяжеловесной IDE.

5. Полезные приёмы Vim для работы над веб‑проектами

Чтобы работа стала ещё комфортнее, стоит обратить внимание на несколько дополнительных возможностей Vim:

1. Сопоставления для часто используемых команд.
Помимо уже приведённых `inoremap :wa` и `inoremap :qa`, можно создать горячие клавиши для запуска тестов, перезапуска сервера, перехода между связанными файлами (например, контроллер ↔ представление).

2. Окна и вкладки.
Для небольших проектов удобно держать, скажем, `app1.rb` и `index.erb` в двух соседних окнах (`:split` / `:vsplit`), чтобы одновременно видеть код маршрута и шаблон, с которым он работает.

3. Шаблоны и сниппеты.
Часто повторяющиеся конструкции - заготовка маршрута Sinatra, каркас HTML‑страницы, стандартный блок `layout` - можно оформить в сниппеты, вставляемые по нескольким нажатиям клавиш.

4. Подсветка синтаксиса и автодополнение.
Правильно настроенная подсветка Ruby и HTML/ERB помогает заметить опечатки и синтаксические ошибки ещё до запуска приложения, а автодополнение - уменьшить количество рутинного набора.

6. Организация работы с несколькими окружениями

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

- Использовать отдельные ветки Git для экспериментов;
- Создавать в файле `project` группы файлов, относящихся к разным частям проекта (например, комментариями внутри самого файла);
- При необходимости иметь несколько файлов проекта - для разных подпроектов или лабораторных работ.

Vim в таком подходе остаётся единым интерфейсом, а Git и Sinatra - инструментами, которые легко вписываются в уже установленный рабочий поток.

7. Итоги

Простой пример с Ruby и Sinatra показывает, как Vim превращается в удобную платформу для разработки даже без тяжёлых IDE:
один файл проекта описывает структуру кода, тот же список используется для Git, запуск приложения выполняется прямо из редактора, а горячие клавиши и маппинги ускоряют рутинные операции.

При таком подходе Vim перестаёт быть "просто редактором", а становится центром всей разработки. И если один раз настроить подобный рабочий процесс под себя, он начинает экономить время и силы каждый день - особенно в задачах, где важны скорость обратной связи и минимум отвлечений.

Комментарии

MebelExpert 20-05-2026 19:11
Если кто-то как раз присматривает диван на кухню, могу посоветовать фабрику мягкой мебели «Модуль» из Краснодара. У них диваны со спальным местом и ящиками для хранения, делают под заказ по размерам, материалы сертифицированные, механизмы нормальные, не люфтят. Цены адекватные, без накруток салонов, плюс дают гарантию. Я свой выбирал и заказывал через их сайт — помогли с замерами и конфигурацией, привезли и собрали без доплат.
Прокрутить вверх