Ruby
Темы для изучения Ruby
Reflection/Metaprogramming
Mixins
Operator overloading
Разработка custom DSL
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
Was this helpful?