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
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