Ruby/Rails дайджест #27: второй релиз beta-версии Ruby on Rails 6, обновление JRuby, обзор потенциальных фич в Ruby 2.7
Всем привет!
Начнем с того, что сообщество Ruby продолжает работу над Ruby on Rails 6 — в феврале вышла вторая бета-версия c новым code loader, получившим название Zeitwerk, а к концу апреля ожидается релиз стабильной версии фреймворка. Также до конца марта открыта регистрация докладов на конференцию RubyC, которая пройдет в сентябре в Киеве и уже анонсированы первые спикеры.
Тренды в сообществе Ruby
- 24 февраля языку Ruby исполнилось 26 лет
Ruby was named Ruby on this day, February 24th, 1993. Happy 26th birthday, Ruby!
Yukihiro Matsumoto February 24, 2019
- Сооснователь Discourse отметил 7% уменьшение времени ответов и значительное снижение потребления памяти после перехода на Ruby 2.6.1
Looks like Ruby 2.6.1 is going to give @discourse a 7% performance improvement for median request time and a large memory saving! meta.discourse.org/...speed-discourse-up/108281 ... great job @yukihiro_matz / @_ko1 / @k0kubun and team!
Sam Saffron February 4, 2019
- DHH объявил, что Basecamp и Shopify уже используют вторую бета-версию Ruby on Rails 6 в продакшене
Rails 6.0 beta2 has been released! It includes the exciting new code loader for Ruby called Zeitwork, as well as a bunch of other fixes and tweaks. Already running in production for both @basecamp and @shopify ❤️
DHH February 25, 2019
Релизы
Rails 6.0.0 beta2 — вышла вторая бета-версия фреймворка Ruby on Rails.
JRuby 9.2.6.0 — обновление второй по популярности имплементации языка Ruby.
Passenger 6.0.2 — команда Fusion выкатила обновления сервера приложений Passenger.
Spree 3.7.0 — новый релиз open source движка для создания ecommerce-приложений.
Почитать
Introducing Transaction Support in aws-record — гем aws-record теперь поддерживает транзакции.
Dream Code First — автор делится мнением, почему важно следовать подходу test-driven development (TDD).
From JavaScript to Ruby: A few of my favourite features — разработчик, перешедший с JavaScript на Ruby, делится мнением о самых примечательных фичах Ruby.
Resolve foreign key constraint conflict while copying data using topological sort — автор на основе собственного опыта рассказывает, как решить проблемы с внешними ключами при помощи топологической сортировки.
Preload, Eager Load, Includes and Joins in Ruby on Rails — в чем разница между preload, eager load, includes и joins в Ruby.
Early Hints and HTTP/2 Push with Falcon — как реализована технология HTTP/2 Push в веб-сервере Falcon.
Make Delegated Methods Private in Rails — автор показывает, как сделать делегированные методы приватными в Rails.
Playing with Ruby Threads and Queues — как использовать потоки и очереди в Ruby.
Rescue from errors with a grace — советы по обработке ошибок в Rails.
Patterns for asynchronous read models in infrastructure without order guarantee — шаблоны реализации асинхронных моделей.
Register Transfer Language for CRuby — плюсы и минусы RTL для CRuby.
Form validations with HTML5 and modern Rails — как реализовать валидацию форм в Ruby on Rails.
Messages on Rails Part 1 — Introduction to Kafka and RabbitMQ — введение в использование очередей сообщений на примере Kafka и месседж-брокера RabbitMQ.
Подборка материалов об изменениях в Ruby on Rails 6:
Для новичков
A Collection of Tips and Tricks For The Ruby Language — полезные советы о программировании на Ruby.
7 reasons why learning SQL is still important for Rails developers — почему знание SQL важно для разработчиков на Ruby on Rails.
The Power of Ruby Structs — детальный разбор класса Struct в Ruby.
Inheritance on-the-fly with Ruby on Rails — гайд по миграции баз данных и использованию класса ActiveRecord::Migration.
Ruby Comments Explained — как работать с комментариями в Ruby.
What is Rake in Ruby & How to Use it — что такое Rake и как его правильно использовать в разработке на Ruby.
Which Ruby IDE Should You Use? — какой текстовый редактор стоит выбрать для разработки на Ruby.
7 Interesting Ruby Code Examples — интересные примеры кода, которые помогут вам в работе.
How to Write Your Own Classes in Ruby — учимся создавать классы в Ruby.
Understanding Boolean Values in Ruby — как работать с булевыми значениями в Ruby.
Подборка от Andy Croll
Be Careful Assigning to has_one Relations — автор на примере показывает, почему стоит осторожно использовать связь has_one.
Secure Your Rails Staging Environment with HTTP Basic Authentication — почему нужно защитить ваше staging-окружение при помощи базовой HTTP аутентификации.
Подборка от Appfolio Engineering
Test Ruby’s Speed with Rails and Rack „Hello, World” Apps — простой бенчмарк производительности Rails и Rack.
Microbenchmarks vs Macrobenchmarks (i.e. What’s a Microbenchmark?) — автор делится мнением о том, что такое микро- и макробенчмарки.
Подборка от AppSignal
Unraveling Classes, Instances and Metaclasses in Ruby — освежаем в памяти, что такое метаклассы в Ruby и как их использовать.
Diving into Ruby’s #dup and #clone — в чем разница между методами #dup и #clone в Ruby.
Подборка от BoltOps
SQS Events and AWS Lambda with Ruby on Jets — автор показывает, как подключить SQS events к AWS Lambda.
Введение во фреймворк Jets:
- AWS Lambda Function: Jets AWS Introduction Series Part 1
- API Gateway: Jets AWS Introduction Series Part 2
- CloudWatch Event Rule: Jets AWS Introduction Series Part 3
Подборка от Brandon Weaver
Ruby 2.7 — Enumerable#tally — автор показывает, как использовать метод Enumerable#tally в Ruby 2.7.
Что такое TracePoint в Ruby и как его использовать в приложениях:
- Exploring TracePoint in Ruby — Part One — Example Code
- Exploring TracePoint in Ruby — Part Two — Events
Подборка от Honeybadger
Avoiding Junk-Drawer Classes in Ruby — как избежать создания так называемых junk-drawer классов при создании приложений на Ruby.
Going deep on UUIDs and ULIDs — детальный разбор стандартов идентификации UUID и ULID.
Подборка от Jason Swett
Page Objects in Rails — что такое page objects и как они помогают тестировать приложения на Rails.
How I write characterization tests — автор рассказывает, что такое characterization tests, и на примерах показывает, как их использовать.
Подборка от Mehdi Farsi
Using the Find module to count the LOC of a Rails application — освежаем в памяти, как использовать модуль Find в Ruby.
How network programming is represented in Ruby — как реализовано сетевое программирование в Ruby.
Подборка от Ombu Labs
Three Useful Data Migration Patterns for Rails — полезные шаблоны миграций данных, которые вы можете использовать в ActiveRecord.
Refactoring with Design Patterns — The State Pattern — подробно о шаблоне проектирования State.
Подборка от reinteractive
Professional Git Workflow — автор рассказывает о своем подходе к работе с Git.
Have you serviced your Ruby on Rails Application? — на что нужно обратить внимание при поддержке приложений на Ruby on Rails.
Подборка от Rewind
Feature Flagging in Ruby Using EightBall — используем feature flags при помощи гема EightBall.
Controlling Sidekiq Workers on AWS with Fargate and SSM Commands — полезная инструкция по управлению Sidekiq-воркерами в приложении на AWS.
How We Keep Your Data Secure — как компания Rewind обеспечивает безопасность данных своих клиентов.
Подборка от RubyPlus
Understanding Service Control with systemd — автор показывает, как управлять сервисами с помощью systemd при загрузке ОС.
Using Foreman to Manage Profile Based Applications — использование Foreman для управления profile based приложениями.
Using racecar to Consume Kafka messages in Rails — как использовать фреймворк Racecar для обмена сообщениями между брокером Kafka и приложением на Rails.
Running Rails Test Cases in a Docker Container — краткая инструкция по запуску тест-кейсов для Rails в контейнере Docker.
How to Run a Shell Script inside a Docker Container — использование shell script в контейнере Docker.
Ruby and Nokogiri Gem Compatibility — к вопросу о совместимости гема Nokogiri с разными версиями Ruby.
Using delivery_boy gem to Publish Messages to Kafka — как использовать гем delivery_boy для передачи сообщений брокеру Kafka.
ActionText in Rails 6 — инструкция, как использовать фреймворк ActionText в Rails 6.
Подборка от Scott Watermasysk
Simplifying Shorti’s Api — история оптимизации гема Shorti.
Better Jekyll Excerpts — упрощение работы с выдержками в Jekyll.
Туториалы
How to Protect Individual Resources with Passwords — как реализовать защиту ресурсов паролем.
Refactoring a large case statement — автор делится опытом рефакторинга больших case statement.
DIY — Create Your Own Rails Generator — инструкция по созданию генераторов в Rails.
Testing JavaScript... with Ruby?! — тестирование JavaScript-код прямо из Ruby.
Speed up Docker image builds with prebuilt base images — автор делится опытом, как ускорить создание сборок образов Docker приложения на Ruby.
The
Debugging Sidekiq Workers Using pry-remote on Rails Applications — инструкция по отладке Sidekiq-воркеров при помощи гема pry-remote.
Building A Simple Landing Page With FaaStRuby Functions — пошаговый туториал по созданию serverless-приложения на платформе FaaStRuby.
Цикл статей о создании serverless-приложения на AWS Lambda при помощи Ruby:
- How to create an Aurora Serverless Cluster using the AWS Console
- Build, Package, and Deploy an AWS Lambda using the Ruby Runtime
Гемы
TraceSpy — обертка вокруг TracePoint.
Heaven’s Door — генератор тест-сценариев для Capybara.
Semantic Logger — полнофункциональный фреймворк для логирования.
Modulation — гем для управления зависимостями в приложениях на Ruby.
Конференции
wroc_love.rb 2019 — с 22 по 24 марта в польском Вроцлаве пройдет ежегодная конференция wroc_love.rb.
Также открыта регистрация докладов на конференцию RubyC
Послушать
The Bike Shed
- 186: Let’s Duplicate Stuff — ведущий подкаста беседует с Daniel Colson — разработчиком компании thoughtbot, который занимается поддержкой инструмента factory_bot.
- 187: Convincing People Not to Build Software — гость подкаста Matthew Sumner рассказывает о своем новом проекте.
- 188: A Function by Any Other Name — участники дискуссии обсуждают duplication, принцип DRY и другие интересные темы.
Ruby Rogues
- RR 398: Productivity with Mani Vaya
- RR 399: Jets Ruby Serverless Framework with Tung Nguyen
- RR 400: Celebrating a Milestone — Ruby Rogues 400th Episode
- RR 401: Environment Variables & Ruby with Jesus Castello
RWpod
- 05 выпуск 07 сезона. Ruby 2.6.1, Hanami v2.0.0.alpha1, CSSans Pro, Neutralinojs, Notable, Finance.js и прочее
- 06 выпуск 07 сезона. Homebrew 2.0.0, React v16.8, Prettier for Ruby, Jets, Tweakpane, MiniSearch,
X-spreadsheet и прочее - 07 выпуск 07 сезона. Rails 6 unnoticed features, ReasonML vs TypeScript, Linaria 1.0, Webp Wasm, Third Party Web и прочее
- 08 выпуск 07 сезона. Register Transfer Language for CRuby, ECMAScript 2019, NSFW JS, Try GraphQL, Cleave.js и прочее
Ruby on Rails Podcast
- 259: Continuous Deployment (dpl) with Hiro Asari — ведущая и гость подкаста обсуждают continuous deployment и гем dpl в частности.
- 260: Rails Performance with Nate Berkopec — основная тема выпуска — производительность фреймворка Ruby on Rails.
- 261: Domain Driven Design & Bots with José Albornoz — послушайте об инфраструктуре в Shopify, domain-driven design и ботах.
Remote Ruby
- Joined by Chris Seaton — ведущие и гость подкаста обсуждают проект TruffleRuby.
- Joined by Terence Lee — в этом выпуске ведущие беседуют с Terence Lee — одним из членов Ruby Core Team и активным участником сообщества Ruby.
- Joined by Ben Orenstein — гость подкаста — Ben Orenstein — рассказывает о своем опыте разработки на Rails и о своем проекте Tuple.
Ruby Testing
- 022 — TDD and Refactoring with Corey Haines — ведущий и гость подкаста обсуждают подход test-driven development (TDD) и рефакторинг
RubyConf AU 2019 — подборка докладов с конференции RubyConf AU 2019.
Февральские выпуски GoRails:
- Dynamic Nested Forms with Stimulus JS — как создавать динамические вложенные формы в Rails при помощи StimulusJS;
- Symbols vs Strings — Symbols и Strings для новичков;
- How to Deploy Rails to Production on Ubuntu 18.04 Bionic Beaver — разворачиваем Rails-приложение на Ubuntu 18.04.
Подборка платных скринкастов от Drifting Ruby в феврале:
- #171 What the RegEx? — как использовать pattern matching в регулярных выражениях на Ruby;
- #172 API Authentication with Omniauth — реализация React-компонента для аутентификации в приложении на Rails 5;
- #173 Simple and Complex Database Migrations — как работают миграции баз данных;
- #174 React Native and Ruby on Rails API Only Applications — как создать приложение на React Native и связать его с API на Ruby on Rails.
Февральские выпуски платных скринкастов от Ruby Tapas:
- #562 Explore and Extend — Part 1 и #563 Explore and Extend — Part 2 — как масштабировать код;
- #564 Exploratory Refactoring — основы рефакторинга;
- #565 Parameter Destructuring — как деструктурировать параметры в Ruby.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #26