Ruby дайджест #34: итоги года, Ruby 2.7.0, актуальность Ruby on Rails в 2020

Дайджест был создан в соавторстве с Мариной Завийбородой, Copywriter в RubyGarage.

Всем привет! Завершаем год с нашим традиционным Ruby/Rails дайджестом. 2019 запомнился нам грандиозным релизом Rails 6.0 с Action Mailbox, Action Text, поддержкой параллельного тестирования, Webpacker из коробки и другими полезными вещами. Летом вышла preview1 версия Ruby 2.7.0, включающая улучшения JIT и экспериментальный Pattern Matching. Еще в июне Ruby обзавелся тайпчекером Sorbet, который разработала команда Stripe. А чем запомнился этот год вам?🥳

Релизы

Ruby 2.7.0 — на Рождество вышла новая версия, в которой представлены новые фичи: pattern matching, улучшение REPL, Compaction GC, разделение позиционных и именованных аргументов.

Ruby 2.7.0-rc2 Released — данная версия была выпущена для сбора обратной связи перед финальным релизом Ruby 2.7.0. В ней будут представлены новые фичи: pattern matching, улучшение REPL, Compaction GC, разделение позиционных и именованных аргументов.

Почитать

RSpec metadata — what they are and how to use them — разбираемся в RSpec metadata: что это, как это работает и как использовать.

Proxying Outbound HTTP Requests Through Static IP Addresses on Heroku — учимся проксировать исходящие HTTP-запросы через статичные IP-адреса на Heroku.

Software Philosophy Quotes and Memes — просто подборка мемов и смешных цитат о программировании, Agile, и этом всем :)

Martian Chronicles

Pulling the trigger: How to update counter caches in your Rails app without Active Record callbacks — Evil Martians экспериментируют с триггерами как средством поддержания согласованности агрегированных данных при использовании Active Record и любой базы данных SQL. Вместо того, чтобы использовать сложные инструменты вроде ElasticSearch для фильтрации и поиска, авторы демонстрируют простой подход, который достигает того же результата с некоторыми готовыми функциями базы данных.

Persisted queries in GraphQL: Slim down Apollo requests to your Ruby application — разбираемся, как уменьшить размер сетевых запросов от клиента Apollo к GraphQL Ruby. В статье показывается, как работают эти запросы и как их настроить как на клиенте, так и на сервере с помощью Ruby-гема graphql-ruby-persisted_queries.

BigBinary

Традиционная подборка от BigBinary по обновлениям в Ruby 6:

Rails 6 adds rails db:prepare to migrate or setup a database

Rails 6.1 adds *_previously_was attribute methods

Rails 6 adds guard against DNS Rebinding attacks

Semaphore

How to Easily Modernize Older Applications With Docker — интервью с Elton Stoneman, Docker Architect и автором книги Learn Docker in a Month of Lunches о том, как новичкам обучиться Docker, оптимизации энтерпрайз-систем без переписывания кода и его новой книге.

CI/CD for Spring Boot Microservices — туториал по созданию и тестированию образа Docker с помощью непрерывной интеграции. Также в статье объясняется, как расширить CI/CD с непрерывным развертыванием на кластер Kubernetes.

In Continuous Integration, Run Fast and Fundamental Tests First — оптимизируем CI/CD пайплайн с помощью некоторых уловок.

Benchmark Report: Docker Builds with Semaphore vs. Docker Hub — результаты бенчмарка Semaphore и Docker Hub с настоящим use case.

Thoughtbot

Token Authentication with Rails — имплементим простую аутентификацию пользователей (без инструментов вроде OAuth 2) с помощью встроенного функционала Rails.

Faking External Services in Tests with Adapters — учимся генерировать фейковые внешние сервисы в тестах с адаптерами.

Arkency

Unexpected benefits of storing commands — хранение команд в Rails Event Store.

OOP Refactoring: from a god class to smaller objects — примеры рефакторинга по принципам OOP.

Ruby — raise Exception.new or raise Exception — they’re both the same — TLDR: Можно использовать raise Exception и raise Exception.new — результат идентичен и на 4 символа меньше.

Netguru

We Asked the Industry: «Is Ruby on Rails Dead?» — Netguru спросили разных экспертов из Ruby-сообщества про актуальность Ruby on Rails. Мнение единогласное: Ruby on Rails продолжает радовать разработчиков своей стабильностью, разнообразием готовых решений и уникальным, дружелюбным сообществом.

Using Cypress and Screener to Automate Testing for Keller Covered — учимся использовать Cypress и Screener для автоматизации тестирования Keller Covered.

All You Need to Know to Start with Ruby — полезная статья для новичков, которые хотят начать изучать Ruby: базовые принципы языка, как установить Ruby и полезные ресурсы для изучения.

Appfolio

More Fiber Benchmarking — продолжение бенчмаркинга Fiber в Ruby.

JIT and Ruby’s MJIT — авторы разбирают разницу между JIT в Ruby и MJIT.

Ruby’s Roots and Matz’s Leadership — Matz об истоках Ruby и под влиянием каких языков был создан Ruby, а также о лидерстве Ruby среди языков программирования.

Книги

В издательстве The Pragmatic Bookshelf вышло две новых книги, которые можно купить в электронном формате: Software Estimation Without Guessing и Designing Elixir Systems with OTP.

Туториалы

How to Maintain Performance with Big Datasets Using Highcharts.js and Vue — оптимизируем производительность проектов с большим массивом данных с инструментом Highcharts.

Decluttering Translations in Rails Apps — интернационализация (i18n) — неотъемлемая часть приложения, которым пользуются по всему миру. В туториале рассказывается о том, как увеличивать файлы с переводом по мере того, как приложение масштабируется и избежать беспорядка и дублирования.

Filtering with GraphQL and Prisma: What NOT to do — автор делится опытом создания фильтрации более чем одного запроса с GraphQL и Prisma и проблемами, с которыми столкнулся в процессе.

Create AWS S3 bucket as a static website with AWS CLI — краткий туториал по созданию статичных веб-сайтов на AWS S3 bucket и AWS CLI.

Послушать

RWpod

50 выпуск 07 сезона. Bundler 2.1.0, JIT and Ruby’s MJIT, JavaScript component-level CPU costs, Snabberb, FX и прочее

49 выпуск 07 сезона. What’s new in Ruby 2.7, Rubyfmt with Atom, ImageProcessing, NanoNeuron, Creepyface и прочее

48 выпуск 07 сезона. Rails 5.2.4, reverted Ruby 2.7 new feature, Scaling SVG Elements, Matestack, NeatJS и прочее

47 выпуск 07 сезона. 10 New Things in Active Record, Ruby Next, Postwoman, Chatwoot, GraphQuill, SiriwaveJS и прочее

46 выпуск 07 сезона. Bytecode Alliance, Scalable Concurrency, Front-End Tooling Survey 2019, Top-level await, Ky и прочее

45 выпуск 07 сезона. Rails 6.0.1, TypeScript 3.7, ANTLR, Prism, Skunk, FFmpeg.js, Sharp, Tenko, Proton и прочее

Remote Ruby

Concerns, Interactors, and Ruby 2.7 Features (Ruby 2.7 Christmas Day 🎉) — в подкасте идет речь об использовании Concerns в Rails по сравнению с сервисными объектами (с использованием Interactors) и возможностях, которые появятся в Ruby 2.7.

Introducing Nate Hopkins, Working with ActionCable’s API, Webpacker in Rails Engines, and Stimulus Reflex Updates — в этом эпизоде Нейт Хопкинс рассказывает об API-интерфейсе ActionCable, обсуждает с ведущими подкаста проблемы использования JavaScript в новом движке Rails и делится опытом управления OSS-проектами GitHub Action.

Introducing Andrew Mason, CI Tooling, Ruby 2.7 Features, Rails 6.1 on the Radar — один из ведущих программы, Джейсон, делится способами использования GitHub Actions за пределами CI, новых функциях в Ruby 2.7 и некоторых функциях на радаре для Rails 6.1.

Building Chat Applications, GitHub Actions, HatchBox Features, and Mistakes — Джейсон рассказывает о том, каково было работать с ActionCable и React над последней функцией Podia — обменом сообщениями. Ведущие также обсуждают действия GitHub и некоторые функции HatchBox (включая использование DigitalOcean Spaces в качестве замены S3).

5by5 Ruby on Rails Podcast

#297: The Functional Rubyist with Joe Leo — подкаст посвящен функциональному программированию в Ruby и Ruby-сообществу после RubyConf 2019.

#296: Conscious Coding Practice with Noah Gibbs — подкаст с Noah Gibbs, членом Ruby Core Team, о его книге Mastering Software Technique: Conscious Practice for Writing Software и многом другом.

#295: Power the World with Rails with Bindiya Mansharamani & Andrew Dereng — подкаст о выборе GraphQL для проекта RigUp, культуре разработчиков и карьерном пути для достижения уровня Senior.

Всем Ruby-обнимашки и с Новым Годом🎄


← Предыдущий выпуск: Ruby дайджест #33
Следующий выпуск: Ruby дайджест #35

👍НравитсяПонравилось0
В избранноеВ избранном2
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube


5 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Отличный материал, большое спасибо !

О, отлично, а то я уже начал волноваться, что больше дайджестов не будет. С наступающим и, как обычно, спасибо!

Теперь дайджест выходит каждые полтора месяца :)

Подписаться на комментарии