Разработка приложений под Ruby on Rails – Часть 1

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

Начну с простого – со списка (пополняемого) gem’ов, которыми пользуюсь.

  1. capistrano (2.14.2): развёртывание приложений на удалённых серверах
  2. devise (2.2.3): система аутентификации пользователей (однако в дальнейшем я отказался от этой системы в пользу самописной системы аутентификации, о причинах расскажу позже)
  3. cancan (1.6.9): система авторизации пользователей
  4. omniauth (1.1.3): аутентификация пользователей через социальные сети и другие подобные внешние сервисы
  5. bootstrap (0.0.1): набор шаблонов для оформления страниц
  6. annotate (2.5.0): полезный гем для создания описания моделей.
  7. thin (1.5.0): сервер заменяющий WEBrick на этапе разработки
  8. bcrypt-ruby (3.0.1): гем, необходимый для функционирования самописной системы аутентификации

Beautifier для vim

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

Для начала надо проверить, есть ли поддержка отступов для данного типа файлов в имеющейся версии вима.

:filetype

Если vim ответит что-то вроде

filetype detection:ON  plugin:ON  indent:ON

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

В том случае, когда всё хорошо, то достаточно в командном режиме набрать команду типа такой

gg=G

Здесь gg – это перейти к началу файла, = означает обрабатывать файл до точки остановки (да-да, как раз этот знак равенства и есть бьютифаер), G – означает двигаться до конца файла.

Разумеется, если понятно, как этот механизм работает, то можно создавать макросы, делать обработчики кусков кода и прочее.