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 Меми — просто добірка мемів і смішних цитат про програмування, 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

— продовження бенчмаркінгу 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-CPU level 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

Проблеми, 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

Опубліковано: 28/12/19 @ 11:00
Розділ Різне

Рекомендуємо:

Один проект і два PM: можливе ефективне керування
Predictive Software Engineering як шанс для аутсорса підвищити якість послуг
Переїзд до Великобританії. Від студента-футболіста в Києві до Software Developer в Лондоні за 5 років
Здоров'я ІТ-спеціаліста: мігрень, невропатії, тунельний синдром
DevOps дайджест #28: Kubernetes 1.17, Kubernetes Admission Controllers, CoreOS Clair і Flan Scan