Привет всем! Апрель выдался чрезвычайно продуктивным для Ruby-сообщества.
Начнем с того, что были официально представлены Hanami v1.2.0 и финальная версия Rails 5.2.0, а также Nginx Unit 1.0. Кроме того, вышло множество материалов с конференций RailsConf 2018 и wroc_love.rb.
Почитать
10 Key Points of Ruby Development: Special Interview with Matz and Mr. Miyagawa of Rebuild.fm — 10 ключевых моментов из интервью создателя Ruby Юкихиро «Matz» Мацумотоведущему популярного подкаста Rebuild.fm.
RailsConf 2018 Edition — подборка материалов с RailsConf 2018.
How to build rock-solid Ruby on Rails apps with BDD — как создавать приложения на Rails с помощью Behavior-Driven Development (BDD).
PRPL on Rails Part 1: Code Splitting — автор рассказывает, как ускорить работу приложения на Rails с помощью разделения кода.
Web Scraping for Fun — создаете поискового робота? Из этой статьи вы узнаете о четырех разных способах веб-скрейпинга.
Refactoring Rails configs for deploy to Kubernetes — показывает, как выполнить рефакторинг конфигурации Rails-приложения, чтобы развернуть его в кластере Kubernetes.
2018 Ruby on Rails Developer Community Survey — свежий доклад о том, какие инструменты наиболее часто используются сообществом Ruby-разработчиков.
Modern Backend Developer in 2018 — какими технологиями должен владеть современный бекенд-разработчик.
ImageProcessing 1.0 Released — автор подробно описывает преимущество новой версии популярного гема ImageProcessing для обработки изображений.
Interactive debug sessions in RSpec with Capybara — статья рассказывает об интерактивной отладке Rails-приложения с помощью фреймворка RSpec и гема Capybara.
Introducing sidekiq_profiling_middleware, a tool for profiling Sidekiq — как профилировать Sidekiq-задачи при помощи нового гема sidekiq_profiling_middleware.
Improve Performance and Save Money with These Software Development Tricks — узнайте, как оптимизировать работу приложения на Ruby on Rails.
How I Built Timeasure: Part 2 — Collecting Measurements & Supplying Configuration — продолжение цикла статей о создании гема Timeasure; вторая часть посвящена настройке конфигурации и измерений.
4 levels of the data validation in a Rails application you should be aware of — автор описывает четыре уровня проверки данных, о которых вы должны знать.
Maps with React Native, Rails, and PostgreSQL — статья научит вас, как реализовать функционал геолокации в приложении на React Native, Rails и PostgreSQL.
Top 10 errors from 1000+ Ruby on Rails projects (and how to avoid them) — 10 наиболее распространенных ошибок в проектах на Ruby on Rails, а также о том, как их предотвратить.
Migrating from state_machine to aasm in Rails — автор делится опытом перехода со state_machine на aasm при миграции крупного приложения с Rails 4 на Rails 5.
4 (of many) awesome additions in Ruby 2.5.1 (and how to install it) — автор подробно останавливается на четырех особенностях Ruby 2.5.1.
Rails: Callback Hell and Pipeline Heaven. Let’s talk about the problem — статья покажет вам, как предотвратить «ад обратных вызовов» (callback hell) в Rails.
Can JWT be used for sessions?— стоит ли использовать JSON Web Token (JWT) при работе с сессиями.
Using singleton objects as default arguments in Ruby — статья научит вас использовать синглтон-объекты в качестве аргументов по умолчанию.
Ruby Concepts — Singleton Classes — подробное объяснение, что такое синглтон-классы (singleton classes) в Ruby.
Use Hash#fetch when using Rails params in controllers — почему стоит использовать метод #fetch при вызове аргументов в приложении на Rails.
How to Use the Decorator Pattern in Ruby — узнайте, в каких случаях стоит использовать шаблон проектирования Декоратор (Decorator).
Подборка от AppSignal
Russian doll caching in Rails — как можно оптимизировать кеширование матрешкой (Russian Doll caching) в Rails.
Rescuing exceptions in Ruby — как правильно использовать rescue при работе с исключениями в Ruby.
Rails’ built-in cache stores: an overview — обзор встроенных хранилищей кеша в Rails.
ActiveRecord performance: the N+1 queries antipattern — как решить проблему запроса N+1 при работе с ActiveRecord в Rails.
Подборка от BigBinary
Ruby 2.5 supports measuring branch and method coverages — автор показывает, как использовать библиотеку Coverage в Ruby 2.5 для измерения степени покрытия кода тестами.
Ruby 2.6 added option to raise exception in Kernel#system — в Ruby 2.6 добавлена возможность вызывать исключения в Kernel#system.
Ruby 2.5 enables Thread.report_on_exception by default and we get more info when threads die — статья посвящена работе с исключениями, в частности, с методом Thread.report_on_exception, который в Ruby 2.5 активирован по умолчанию.
Подборка от Appfolio Engineering
Rails Ruby Bench: What Is It and Why Should You Care?— данная статья рассказывает, что такое Rails Ruby Bench и как вы можете использовать этот инструмент при создании Rails-приложений.
Ruby 2.6 and Ahead-Of-Time Compilation — узнайте, как заранее задействовать JIT-компилятор в Ruby 2.6 preview 1 для приложений на Rails.
Ruby Coordinator Processes for Fork Servers — когда использовать и когда не использовать паттерн Координатор (Coordinator).
Подборка от Codeship
Building Cloud Apps with Civo and Docker Part IV: Kubernetes — четвертая часть цикла о создании облачного приложения при помощи Civo и Docker; описывает, как развернуть приложение при помощи платформы Kubernetes.
Refactoring for the Tell Don’t Ask Pattern — как сделать рефакторинг кода в соответствии с принципом Tell Don’t Ask.
Подборка от Engine Yard
Do We Still Need RVM Gemsets?— автор делится опытом использования гемсетами в Ruby Version Manager.
5 Commercial Use Cases Continue to Prove the Value of Ruby on Rails — преимущества фреймворка Ruby on Rails на примере крупных и успешных проектов.
Подборка от End Point
Using FFI in Ruby — узнайте, как использовать FFI (интерфейс сопряжения функций с кодом на другом языке программирования) для оптимизации производительности приложений на Ruby.
Ruby on Rails: Russian Translation and Pluralization — автор делится опытом локализации приложения на Rails: перевод и образование множественного числа в русском языке.
RailsConf 2018 Summary: The Train is Still Moving — статья подводит итоги конференции RailsConf 2018.
Подборка от Heroku
A Dive into Ruby CVE-2017-17405: Identifying a Vulnerability in Ruby’s FTP Implementation — команда Heroku обнаружила уязвимость, связанную с реализацией FTP в Ruby.
MJIT: A Method Based Just-in-time Compiler for Ruby — статья рассказывает о принципах работы MJIT — реализации JIT-компилятора, основанного на method-based подходе. Кроме того, там же есть интересная дискуссия с участием Юкихиро «Matz» Мацумото.
Подборка от Kir Shatrov
Asynchronous Active Record migrations — что такое асинхронные миграции и для чего они используются в команде разработчиков Shopify.
Debugging Ruby processes in Kubernetes — узнайте, как произвести отладку приложения на Ruby в Kubernetes.
Подборка от Netguru
TIL #5: How to work with Conditional Assignment Operator — в этой статье автор показывает, как избежать проблем при использовании Conditional Assignment Operator.
First Steps with Sinatra as a Rails Developer — Part 1 — первая часть цикла о создании приложения на Ruby с помощью фреймворка Sinatra.
Также вышли две последних статьи из цикла о SOLID-принципах:
- SOLID Principles #4 — Interface Segregation Principle — статья посвящена принципу разделения интерфейса.
- SOLID Principles #5 — Dependency Inversion Principle — автор заканчивает цикл статьей, которая посвящена принципу инверсии зависимостей.
Подборка от Paweł Urbanek
How to Migrate a Ruby on Rails App from Heroku to Dokku — автор научит, как мигрировать Ruby on Rails приложение с Heroku на PaaS-платформу Dokku.
Direct, Secure Rails Client-side File Uploads to AWS S3 Buckets — работая над приложениями на Rails, вы, вероятно, использовали облачный сервис Amazon S3 для хранения объектов. Узнайте, как безопасно и напрямую загружать файлы в S3 из клиентской части приложения.
Подборка от Semaphore
Rails Testing Handbook: A Free Ebook to Help You Build Better Apps — Semaphore выпустили руководство по тестированию приложений на Ruby on Rails.
Lies, Damn Lies, and the State of Testing in Rails — исследование о том, насколько в среднем Rails-приложения покрыты автотестами.
Подборка от Abe Voelker
Автор написал серию из пяти статей о том, как развернуть Rails-приложение при помощи Kubernetes Engine:
- Deploying a Ruby on Rails application to Google Kubernetes Engine: a step-by-step guide — Part 1: Introduction and creating cloud resources — первая статья посвящена настройке облачной инфраструктуры для развертывания Rails-приложения.
- Deploying a Ruby on Rails application to Google Kubernetes Engine: a step-by-step guide — Part 2: Up and running with Kubernetes — автор подробно рассказывает, как работает Kubernetes Engine.
- Deploying a Ruby on Rails application to Google Kubernetes Engine: a step-by-step guide — Part 3: Cache static assets using Cloud CDN — третья часть посвящена настройке Cloud CDN для ускорения передачи статического содержимого.
- Deploying a Ruby on Rails application to Google Kubernetes Engine: a step-by-step guide — Part 4: Enable HTTPS using Let’s Encrypt and cert-manager — как активировать https и получить SSL-сертификат.
- Deploying a Ruby on Rails application to Google Kubernetes Engine: a step-by-step guide — Part 5: Conclusion, further topics and Rails extras — заключительная статья цикла содержит перечисление инструментов, не вошедших в цикл.
Туториалы
Rails 5.2 and Active Storage — the new approach to file uploads — Active Storage — одна из основных особенностей Rails 5.2; научитесь адаптировать проект на Rails к Active Storage.
How To Create A Memory Leak in Ruby — чтобы обнаружить утечку данных в приложении на Ruby, нужно знать, что это и как она выглядит. Этот туториал научит вас намеренно создавать утечки данных, чтобы потом вы могли легко их обнаруживать и устранять.
Stop robots and crawlers causing errors in your Rails application — узнайте, как уберечь ваше приложение на Rails от ошибок, возникающих по вине поисковых роботов.
Deploy your Rails app faster with Mina, Phusion Passenger, Ngnix and MySQL on Ubuntu 14.04 — как быстро развернуть приложение на Ruby on Rails при помощи таких инструментов, как Mina, Phusion Passanger, Nginx и MySQL.
Developing a Ruby on Rails app with Docker Compose — как создать приложение на Ruby on Rails при помощи инструмента Docker Compose.
Executing commands in Pods using K8s API — этот туториал поможет вам узнать больше о работе с Kubernetes, в частности о том, как выполнять команды в контейнерах (pods).
Handling Errors Gracefully — автор делится опытом написания обертки для имплементации result object в Rails-приложениях.
How to test that an email was sent — тестируем, был ли отправлен имейл в Rails-приложении.
db:migrate:down and Bash completion — экономим время при откате миграции, используя автозаполнение в консоли.
Add SMS Notifications to Your Rails App Using Twilio — как внедрить функционал SMS-оповещений в приложении на Rails.
The Ultimate Guide to Ruby Timeouts — туториал посвящен настройке таймаутов в популярных Ruby-гемах.
Full text searching Linux man pages with Elasticsearch — научитесь настраивать полнотекстовый поиск в справочных страницах Linux при помощи Elasticsearch.
Building a static blog using Jekyll and Strapi — как создавать статический блог при помощи Jekyll и Strapi.
Linear Regression in Ruby — как построить линейную регрессию (один из простейших алгоритмов машинного обучения) на Ruby.
Testing Example Code In Your Jekyll Posts — примеры кода в блогах и статьях зачастую содержат ошибки. Узнайте, как избавиться от подобных проблем в блог-постах на Jekyll.
Profiling Ruby’s Memory Allocation with TCmalloc — туториал научит вас визуализировать использование памяти компилятором Ruby при помощи инструмента TCmalloc.
Релизы
Rails 5.2.0 FINAL — официальный релиз финальной версии фреймворка Ruby on Rails 5.2.0 с новым Active Storage, Redis Cache Store и другим функционалом.
Hanami v1.2.0 — вышла новая версия v1.2.0 фреймворка Hanami.
NGINX Unit 1.0 — представлен NGINX Unit 1.0 — новая версия популярного веб-сервера и сервера приложений.
RubyMine 2018.1 — новая версия RubyMine 2018.1.
JRuby 9.1.17.0 — представлена новая версия JRuby 9.1.17.0.
Ruby Gems
MemoizedOnFrozen — гем позволяет использовать мемоизацию для неизменяемых объектов.
ApiStruct — предоставляет возможность строить обертки с одинаковым интерфейсом под разные API.
sidekiq_profiling_middleware — позволяет профилировать Sidekiq-задачи.
The WordpRSS Ruby gem — гем поможет вам встроить RSS-агрегатор в приложение на Rails.
Embedded — встраивает объект-значения в объекты Active Record.
ScoutDogstatsd — позволяет экспортировать показатели производительности Rails-приложения через клиент DogStatsD.
Послушать
The Bike Shed
- 149: E With an Umlaut — ведущие затрагивают много интересных тем, в том числе баг в Ruby при попытке разграничить модули в монолитном приложении Shopify.
- 150: I Fight For the Users — ведущие делятся опытом разработки на Rails и JavaScript.
- 151: Scheming About Schema — в этом подкасте ведущие обсуждают подготовку в конференции RailsConf 2018.
Ruby Rogues
- RR 356: Geospatial Programming in Ruby with Daniel Azuma and Tee Parham — послушайте, что такое геопространственное программирование в Ruby.
- RR 357: Ruby 3 with Takashi Kokubun — участники обсуждают Ruby 3, уделяя особое внимание работе JIT-компилятора.
- RR 358: Code Automation — ведущие обсуждают автоматизацию, методологию Agile, практики DevOps и многое другое.
- RR 359: Panelist Thoughts, Gripes, and Ideas — участники дискуссии обсуждают самые разные темы, в том числе гемы, модули Node и зависимости.
RWpod
- 13 выпуск 06 сезона. Rails 5.0.7 and 5.1.6, React v16.3.0, Elapsed time with Ruby, Redux — Not Dead Yet, TensorFlow.js, ReLaXed и прочее
- 14 выпуск 06 сезона. D3 5.0, Sails 1.0, Ruby Sass to be put to pasture, ECMAScript 2016, 2017, and 2018, HTTPX и прочее
- 15 выпуск 06 сезона. Rails 5.2.0, Hanami v1.2.0, Front-End Developer Handbook 2018, VuePress, Epic-spinners и прочее
- 16 выпуск 06 сезона. Ruby 2.5 enables Thread.report_on_exception, wasm-pack, Action Policy, Package Phobia, Pico.js и прочее
Посмотреть
Rails API: JSON Web Token Part 3 — видеотуториал о том, как создать JWT-токен в контроллере.
Подборка видео с конференции wroc_love.rb 2018:
- Cables! Cables! Cables! — Vladimir Dementyev
- Applying CQRS & Event Sourcing on Rails applications — Andrzej Śliwa
- Counterintuitive Rails pt. 1 — Ivan Nemytchenko
- Enterprise Rails panel
- Event Sourcing Anti Patterns and Failures — Nathan Ladd
- The pillars of Domain Driven Design — Marco Heimeshoff
- SUPER AIN’T SUPER: From OOP To FP and Beyond! — Nick Sutterer
- Better WebPerformance with Rails — Stefan Wintermeyer
- Beyond the current state: Time travel to the rescue! — Armin Pašalić
- Counterintuitive Rails pt. 2 — Ivan Nemytchenko
- Understanding coupling — Łukasz Szydło
- Toolbelt of a Seasoned Bug Hunter — Damir Zekić
- MVCC for Ruby developers — Michał Młoźniak
Апрельская подборка от GoRails, в которой ведущий объясняет первые два принципа SOLID, показывает, как интегрировать компоненты Vue.js в представления (views) Ruby on Rails и как писать тесты для Rack middleware:
- Single Responsibility Principle
- Vue.js Components in Rails Views
- Open Closed Principle
- Writing Tests for Rack Middleware
Подборка платных скринкастов от Drifting Ruby в апреле:
Апрельские выпуски платных скринкастов от Ruby Tapas:
- Episode #521: Distributable Desktop Apps — Jason Clark
- Episode #522: Cucumber Expressions with Matt Wynne
События
Ruby Meditation #22 — 19 мая в Днепре пройдет Ruby Meditation #22; на ивенте вы узнаете, как создать Slack-бота на Ruby и какие новые возможности дают функциональные объекты.
Rails Girls Athens v3 —
Rails Girls Tokyo — 18 мая Rails Girls проведут бесплатный двухдневный воркшоп по Rails в Токио.
Конференции
RubyHACK —
Ruby Unconf — 5 и 6 мая Гамбург принимает Ruby Unconf 2018 — конференцию, где сами участники решают, каких спикеров слушать и какие темы они хотят обсудить.
ROSS Conf Amsterdam —
Balkan Ruby — 25 и 26 мая в Софии проводится конференция Balkan Ruby, где среди спикеров Serdar Dogruyol — создатель языка Crystal и фреймворка Kemal.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #16