Ruby

Темы для изучения Ruby

Rails

  • ActiveModel

  • Modules

  • REST API

  • Devise

  • I18n

Patterns

  • Presenter

  • Interactor-rails

  • Aasm (acts-as-state-machine)

Background Processing, Worker and Queue

  • sidekiq

  • delayed_job_recurring

  • iron_worker_ruby

Tests

  • rspec-rails

  • webmock

  • factory_bot

  • capybara

  • poltergeist

  • selenium-webdriver

Monitoring, Logging, Debugging, Tracking

  • scout_apm_ruby

  • newrelic_rpm

  • rollbar

  • mixpanel

  • foreman (process manager for applications with multiple components)

  • byebug

  • impressionist

Security Vulnerability

  • brakeman

Emails

  • mailgun

  • sendgrid

Запуск в продакшен

  • Puma

  • Passenger

  • Unicorn

Таблица проверки качества кода для Ruby-on-Rails:

  • Каждое действие в контроллере вызывает только один метод модели, за исключением начального find или new. (Все остальные необходимые вызовы .new или .update делаются в модели).

  • Не более двух экземпляров переменных передаются между каждым контроллером и видом.

  • Все имена моделей и переменных моментально понятны (новым разработчикам) и сокращены насколько возможно без использования аббревиатур.

  • Все специальные «find», доступные более чем из одного места, в коде используют name_scope вместо отдельных методов.

  • Методы .find и .find_by_ никогда не вызываются из вида или помощника (view helper).

  • Полное отсутствие своего кода, дублирующего встроенную функциональность Rails.

  • Код должен быть интенсивно выдраен (DRYed) в процессе разработки (избавлен от повторов).

  • Любой функционал, используемый в двух и более моделях, вынесен в библиотеку/модуль.

  • Вся логика, дублирующаяся в разных приложениях, помещается в подключаемый gem.

  • STI не используется нигде. Вообще.

  • Каждое проектное решение порождает минимально-необходимую для удовлетворения текущих нужд пользователей архитектуру.

  • В приложение не закладывается предполагаемая будущая функциональность.

  • Практически полное покрытие приложения высокоуровневыми тестами: для действий внутри и между контроллерами.

  • Покрытие тем выше, чем больше конечных пользователей у кода.

  • Все тесты проходят перед включением кода в общий репозиторий.

  • Каждое исправление ошибок внедренного продукта имеет тесты для исключения регрессии.

  • Код каждого расширения (plugin) просматривается.

Дополнительные источники

Last updated