Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

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

$
0
0

Привет! Этот дайджест мы решили посвятить 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‒ библиотека, которая создает провайдеров аутентификации для множества социальных сетей, включая даже GitHub!

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-railsявляются популярными веб-серверами для 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). Sidekiq эффективен во время работы над небольшими задачами вроде логов или имейлов, как заявляют на 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.


Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.


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


Viewing all articles
Browse latest Browse all 8115

Trending Articles