Всем привет! Новый Ruby/Rails дайджест за март собрал самые интересные события в мире Ruby. Читайте статью Роберта С. Мартина о влиянии TDD на архитектуру приложения, смотрите видео с RubyConf 2017 в Австралии, обратите внимание на новый гем Patme и узнавайте о многих других полезных ресурсах! Всем интересного чтения!
Почитать
Using Database Replicas in Rails With Octopus Gem‒ успешный кейс масштабирования приложения Freelitics с помощью гема Octopus.
ODBC and writing your own ActiveRecord adapter‒ кейс от Localytics об имплементации ODBC (Open source database connectivity) адаптера для ActiveRecord, совместимого с последними версиями Ruby и Rails.
Chain RSpec Matchers for Improved Test Readability‒ в статье говорится о том, как сделать тесты на RSpec еще более читабельными.
Prototypes in Ruby and the strange story of dup‒ немного про рефакторинг, история о том, как избавиться от дублирования в Ruby с помощью прототипов.
Faster Rails: How to Check if a Record Exists‒ оптимизация запросов к базе данных ‒ распространенная практика для улучшения скорости Rails-приложения. Статья раскрывает вопрос оптимизации проверки существующих записей в вашем Rails-приложении.
Setting up OAuth2 callbacks in Rails with HTTPS offloading on load balancers‒ настройка OAuth2 колбэков в Rails-приложении с проксированием запросов, используя load balancers через HTTPS-протокол.
Towards Faster Ruby Hash Tables‒ статья об устройстве и оптимизации хэш-таблиц в Ruby.
Understanding Ruby GC through GC.stat‒ статья объясняет, как работает Ruby Garbage Collector (Ruby GC).
A Rubyist’s Guide to Postgresql’s Explain‒ детальный гид по функции explain в Postgresql.
Refactoring Ruby: From Subclass to Registry‒ столкнувшись с имплементацией responsive-изображений в legacy-приложении Rails, авторы статьи отрефакторили код и рассказали о своих находках.
50 Most Common Rails Mistakes: The Ruby Way‒ топ-50 самых распространенных и критических ошибок, которые совершают Ruby-разработчики.
Посмотреть
RubyConfAU 2017‒ Если вы пропустили RubyConf 2017, которая проходила в Мельбурне, не расстраивайтесь. Видео с конференции уже появились на Youtube. Спикеры затронули следующие темы: Actors in Ruby! Why let Elixir have all the fun?, Open Source: Power and the Passion, Simple and Awesome Database Tricks, Defragging Ruby, Performance Optimization in Rubyи другие.
Ruby on Rails 5.1.0 Changes and New Features ‒ скринкаст от DriftingRuby о всех изменениях в Ruby on Rails 5.1.0: Yarn/Webpack, системные тесты с Capybara и другое.
Послушать
Ruby on Rails Podcast 225: Capital-R Rubyist by 5by5.tv‒ очередной подкаст от 5b5tv о впечатлениях от RailsConfAU 2017 и размышлениях о том, что такое быть «настоящим Рубистом».
RR 302: Web Security by Ruby Rouges‒ участники подкаста Ruby Rouges обсуждают web-безопасность и безопасность в Rails в частности.
Туториалы
Using Chef and Capistrano to deploy a Rails application on Ubuntu 16.04‒ пошаговая инструкция по развертыванию Rails-приложения с помощью Capistrano и настройки окружения сервера на Ubuntu 16.04, используя Chef.
Concurrency Deep Dive: Multi-process‒ первая часть из цикла статей, посвященных распараллеливанию процессов в Ruby. Детальное объяснение мульти-процессов в Ruby.
Reading Ruby Code: ROM — Exploration‒ завершающая статья из цикла Reading Ruby Code, которая объясняет, как работает метод Container.
Google Spreadsheets and Ruby‒ пошаговый туториал по использованию гема google_driveдля интеграции Google Spreadsheets в Rails-приложение.
SOLID Object-Oriented Design Principles with Ruby Examples‒ туториал по принципам SOLID с примерами на Ruby.
Creating Powerful Command Line Tools in Ruby‒ инструкция по созданию приложений командной строки в Ruby.
Towards Minimal, Idiomatic, and Performant Ruby Code‒ статья о том, как писать минималистичный и производительный Ruby-код с подробными примерами.
Micro-optimizations matter: preventing 20 million system calls‒ продолжая тему производительных приложений, говорим о микро-оптимизациях.
Principles of Effective Testing with Capybara‒ материал о том, как сделать integration-тестирование проще и эффективнее с Capybara.
N+1 Problem or Memory Problems: Why not Solve Both?‒ туториал объясняет, как решить распространенную проблему N+1 и оптимизировать использование памяти.
ActionCable: The Missing Guide‒ коротко и по существу о назначении и использовании ActionCable.
Релизы
Rails 5.1.0.rc1: Loving JavaScript, System Tests, Encrypted Secrets, and more‒ Rails-сообщество внесло более 380 коммитов в Rails 5.1 с момента его выхода. Подробности изменений ‒ в чейнджлогах на GitHub.
Ruby 2.4.1 Released: What’s Changed‒ новая версия Ruby 2.4.1 включает в себя фиксы багов, обновления Onigmo, RubyGems, документации для rss/atom и многое другое.
Ruby 2.4.1, Ruby 2.3.4, Ruby 2.2.7‒ в марте Ruby пополнился многочисленными релизами. Детали в changelogs.
Patme gem — Elixir-style pattern matching for Ruby methods‒ новый гем, который реализует поиск по шаблону для Ruby-методов в Elixir-стиле. Тем не менее, авторы гема Patme обращают внимание на то, что гем является экспериментом и пока что не рекомендуют его использовать в production.
EmailInquire‒ библиотека для валидации email’ов (проверка формата, наличия опечаток, одноразовых email).
Uninterruptibleпомогает обновлять на лету socket-серверы.
Interferon ‒ с помощью Interferon можно отслеживать и получать информацию о состоянии инфраструктуры (например, AWS).
События
Ruby Meditation #14состоится 8 апреля в Киеве. Спикеры будут говорить на следующие темы: When the Whole World is Your Database; Fairy Tale About Chat Bots or Why You Should Use Them; Real-Time Error Alerting & Debugging Tools: Rollbar; We Build Bots. For Real.
Ruby Meditation #15 13 мая в Днепре. Спикеры и темы уточняются, следите за обновлениями.
RubyC 2017‒ масштабная Ruby/Rails конференция состоится
Рандом
TDD Harms Architecture‒ Роберт С. Мартин рассуждает в своем блоге на тему влияния TDD на архитектуру приложения.
RSpec tests for your servers configured by CFEngine, Puppet, Chef, Ansible, Itamae or anything else even by hand.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #2
Следующий выпуск: Ruby дайджест #4→