Ruby/Rails дайджест #5: Ruby/Rails Gems для решения типичных задач

Привет! Этот дайджест мы решили посвятить Ruby/Rails Gems, собрав гемы для решения типичных задач: от тестирования до безопасности Rails-приложений. Надеемся, что эти гемы помогут вам сэкономить время и сделать свою работу еще лучше. И если у вас есть идеи насчет дополнения этого списка, добавляйте интересные гемы в комментариях. Всем полезного чтения!

Style Guides

Хороший Ruby/Rails код должен быть читабельным и понятным даже для не-разработчиков. Чтобы достичь такого уровня, Ruby-разработчики следуют лучшим практикам из The Ruby Style Guide и Rails Style Guide.

ActiveRecord

Kaminari ‒ гем, который реализует пагинацию с возможностью гибкой настройки.

ActsAsTaggableOn позволяет добавлять теги к сущностям вашего Rails-приложения.

Гем deep_cloneable добавляет метод к объектам, который заставляет их копировать самих себя. С deep_cloneable вы получаете точную копию объектов, прилагая минимальные усилия.

Гем Paranoia выполняет функцию обратимого удаления (soft delete). После того, как вы вызвали destroy в объекте ActiveRecord, Paranoia не удаляет записи в базе данных. Вместо этого, гем «прячет» объект, таким образом, вы можете восстановить объект позже.

AASM работает с любыми Ruby объектами, включая ActiveRecord. AASM добавляет DSL для управления состояниями моделей.

PaperTrail позволяет предупредить досадные ситуации, в которых вы не можете отменять (или восстановить) изменения в моделях. С помощью PaperTrail вы можете создавать версии моделей, восстановить данные, и не только.

Globalize используется для мультиязычности в Rails-приложении. Другими словами, Globalize позволяет добавлять переводы на различные языки для данных хранящихся в БД.

ranked-model  ‒ гем для сортировки и изменения позиций данных в таблице.

FriendlyId позволяет создавать красивые (читабельные) URL-адреса и находить по ним нужные ActiveRecord модели.

Ransack используется для реализации поиска по большому числу параметров.

Тестирование

RSpec ‒ фреймворк для тестирования. Понятный и простой синтаксис RSpec позволяет писать тесты максимально приближенные к «человеческому» языку.

Database_cleaner позволяет добавить логику очистки базы данных во время выполнения тестов.

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

Гем factory_girl предоставляет DSL для генерации массивов данных для заполнения моделей, используется для создания тестовых данных.

Гем Faker генерирует фейковые данные (номера телефонов, email, имена пользователей).

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

Shoulda_matchers позволяет ускорить написание тестов для типичного функционал Rails.

Полезный гем simplecov показывает процент кода, покрытый unit-тестами. Таким образом, simplecov стимулирует разработчиков стремиться к 100% протестированному коду, что не может не отразиться на его качестве.

Оформление кода (coding style)

Гем rails_best_practices анализирует код на наличие code smells («код с душком»). Гем предлагает, как можно улучшить ваш код.

RuboCop не оставляет шанса для нарушений оформления кода, сообщая о них сразу в командной строке.

Гем RubyCritic помогает находить code smells. Каждый файл получает рейтинг от «A» до «F». Стремиться надо к отметке «A».

Дебаггинг

Стандартная страница ошибки в Rails довольно простая, поэтому разработчики предпочитают использовать альтернативные инструменты, например, Better Erros.

Pry-byebug создан для пошаговой отладки с помощью точек остановки.

Letter Opener создан для просмотра e-mail’ов прямо во вкладке браузера вместо их отправки. Таким образом, вам не нужно настраивать отправку email’ов в среде разработки и больше не надо беспокоиться о случайной отправке тестового письма неправильному адресату.

Аутентификация и авторизация

Пожалуй, нет такого Ruby-разработчика, который не слышал про гем Devise. Devise помогает построить аутентификацию любой сложности ‒ от аутентификации с помощью email и пароля до системы с приглашениями и т. д.

DeviseInvitable ‒ расширение для гема Devise. DeviseInvitable добавляет функционал рассылки приглашений через email (например, при реализации реферальных программ).

Вход на сайт с помощью аккаунтов таких социальных сетей, как Facebook или Google ‒ обычная практика. OmniAuth ‒ библиотека, которая позволяет создавать провайдеры для аутентификации через социальные сети. Имеет большой список готовых провайдеров.

Rolify ‒ полезная библиотека, которая позволяет вам создавать и управлять user roles.

Гем CanCanCan используется для авторизации пользователей в Rails-приложении.

Pundit — хорошая альтернатива CanCanCan.

API

ActiveModelSerializers генерирует JSON в Rails-приложении.

Apipie-rails ‒ DSL для документирования RESTful API. Apipie буквально описывает код с помощью кода, что довольно удобно для программистов

Безопасность

Brakeman ‒ статический сканнер безопасности, который обнаруживает уязвимости в Rails-приложении.

bundler-audit проверят ваш gemfile.lock на наличие уязвимых версий гемов и не позволяет установку ненадежных гемов.

Гем Secure Headers применяет безопасные HTTP заголовки к ответам Rails-приложений. Secure Headers помогает применять такие заголовки, как CSP, чтобы предотвратить межсайтовый скриптинг и атаки на страницы со смешанным содержимым.

Платежи

Active Merchant предлагает централизованный API для интеграции с множеством популярных платежных систем. Библиотека активно поддерживается своими создателями ‒ ecommerce-платформой Shopify.

Braintree Ruby ‒ гем для интеграции Braintree.

Stripe Ruby Bindings интегрирует платежную систему Stripe.

Развертывание приложений

Puma и Unicorn являются популярными веб-серверами для Ruby/Rack.

Capistrano ‒ фреймворк для написания задач, связанных с автоматизацией развертывания приложений.

Загрузка файлов

CarrierWave ‒ гем для загрузки файлов в Ruby-приложениях.

Minimagick ‒ обертка к консольным утилитам ImageMagick или Graphics Magick.

Для загрузки файлов на внешние сервера, такие как Amazon S3 или Google Cloud Storage, используйте гем Fog, который работает с множеством облачных сервисов, включая AWS, Rackpace Servers и Brightbox.

Отложенные задачи

Sidekiq используется для отложенных задач и впечатляет разработчиков своей скоростью. Среди его преимуществ ‒ удобный мониторинг статуса выполнения отложенных задач и возможность выполнять параллельные задачи.

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

Sucker Punch ‒ еще одна библиотека для выполнения фоновых задач, которая не требует никаких зависимостей (к примеру, Sidekiq нужен Redis). Sucker Punch эффективен во время работы над небольшими задачами вроде логов или имейлов, как заявляют на GitHub.

Полнотекстовый Поиск

Elasticsearch ‒ популярная поисковая система для энтерпрайзов. Гем Elasticsearch интегрирует поисковик в Rails-приложение.

Гем Thinking Sphinx интегрирует в ActiveRecord инструмент для полнотекстового поиска Sphinx.

Используйте PgSearch для интеграции полнотекстового поиска в PostgreSQL.

Переменные окружения

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

Панель администратора

Active Admin и Rails Admin ‒ популярные инструменты панели администратора, или же «админки». Оба инструмента предлагают коробочное решение для управления данными, кастомизированный поиск и фильтрацию.

Administrate предлагает админ-дашборды, которые легко настроить даже новичкам ‒ в этом и есть преимущество Administrate над RailsAdmin и Active Admin.

View Helper

Draper ‒ это гем-декоратор, который добавляет объектно-ориентированное представление вашему веб-приложению.

Simple Form помогает создавать формы для Rails-приложения и быстро добавлять такие элементы форм, как dropdown списки, чекбоксы и радио-кнопки.

Следуйте лучшим SEO практикам с гемом MetaTags, который добавляет в Rails-приложение мета-тэги.

Money реализует конверсию валют, денежные величины и другие операции с классом Money. Money-Rails реализует интеграцию гема Money с Rails.


Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Спасибо за помощь в подготовке дайджеста команде RubyGarage.


← Предыдущий выпуск: Ruby дайджест #4

Похожие статьи:
260-й выпуск подкаста «Откровенно про IT карьеризм». В подкасте пойдет речь о стартапах, играх и аутсорсинге. В программе: Про...
Евгений Клименков — инженер-программист из Минска. После президентских выборов, за которыми последовали мирные протесты...
У випуску: Python 3.6 швидший за Python 3.5. Стартап Kite експлуатує опен сорс бібліотеки. Еволюція процесу деплоїв...
IncubateX Ukraine — международный продуктовый хакатон со свободной темой, который пройдёт 27-28 августа...
Летом прошлого года американская продуктовая компания Globality открыла в Киеве R&D-центр. Перед...
Яндекс.Метрика