Ruby/Rails дайджест #26: релиз Ruby 2.6.1 и Hanami 2.0.0.alpha1, представлена первая бета-версия фреймворка Ruby on Rails 6

Всем привет!

Начнем с того, что сообщество Ruby активно обсуждает первую бета-версию фреймворка Rails 6 и его новые фичи. Команда разработчиков CRuby выкатила патч-версию Ruby 2.6.1, в которой исправлен серьезный баг, обнаруженный в Ruby 2.6.0. Также в феврале закрывается прием докладов на конференции RubyConfBY, RubyDay и EuRuKo.

Тренды в сообществе Ruby

  • DHH представил бета-версию фреймворка Ruby on Rails 6.0.

Rails 6.0 beta1 has been released! Two major new frameworks — Action Mailbox and Action Text — and two important scalable-by-default upgrades with multiple database support and parallel testing. Along with a ton of other awesome stuff.January 18, 2019

  • Matz высказался по поводу излишнего стремления разработчиков внести изменения в Ruby.

20+ years ago, a guy who disagree with me copied Ruby repo & replaced my name in copyright notices. He wanted his version of the lang. Technically it was license violation but I didn’t say anything. I was curious about his ideas. No move for months. The repo disappeared. 1/ January 7, 2019

  • DHH анонсировал, что Webpacker будет компилятором по умолчанию в Rails 6.
  • Команда CRuby выкатила патч-версию Ruby 2.6.1 раньше запланированного срока, чтобы исправить баг, связанный с Net::Protocol.

Happy to see that the CRuby core team eventually prioritized the release of 2.6.1 much earlier than originally planned as a patch release for the problematic Net::Protocol::BufferedIO#write bug. bugs.ruby-lang.org/issues/15468 January 30, 2019

Релизы

Rails 6.0.0 beta1 — первая бета-версия фреймворка Ruby on Rails 6.0.

Ruby 2.6.1 — подоспел патч Ruby 2.6 — встречайте версию 2.6.1.

Hanami 2.0.0.alpha1 — релиз первой альфа-версии фреймворка Hanami.

Hanami 1.3.1 — новая стабильная версия Hanami.

Passenger 6.0.1 — команда разработчиков Phusion выкатила версию 6.0.1 популярного сервера приложений Passenger.

Bundler 2.0.1 — патч-обновление второй версии менеджера пакетов Bundler.

Почитать

Exploring a critical Net::Protocol issue in Ruby 2.6.0p0 and how it can lead to a security problem — автор разбирается в критической ошибке при использовании Net::Protocol в Ruby 2.6.0 (спойлер: в Ruby 2.6.1 этот баг уже исправлен).

Rails handles large number of nested routes better than Sinatra — сравнение производительности Rails и Sinatra в обработке вложенных маршрутов.

The Ruby Toolbox — обновился популярный каталог Ruby гемов.

Ruby & AWS Lambda — автор делится впечатлениями об использовании Ruby на сервисе AWS Lambda.

Building a Service-oriented Architecture with Rails and Kafka — построение приложения с SOA-архитектурой при помощи Rails и платформы Kafka.

What’s new in Ruby 2.6 — обзор новшеств в Ruby 2.6.

42 performance tips for Ruby on Rails — полезные советы, как увеличить производительность Rails-приложений.

GraphQL file upload with Shrine — как реализовать функцию загрузки файлов в GraphQL при помощи инструмента Shrine.

Ruby 2.6 Ubuntu packages — пакеты с Ruby 2.6 для операционной системы Ubuntu.

The simplicity and power of Ruby Struct — подробно о классе Struct в Ruby.

Active Admin Tips and Performance Optimizations for Rails Apps — советы по использованию фреймворка Active Admin в Rails-приложениях.

Introducing dry-schema — встречайте новый гем dry-schema.

Why Ruby doesn’t have a Boolean class — почему в Ruby отсутствует класс Boolean.

How to Tell the Difference Between a Default and a Provided Value for Optional Arguments in Ruby? — как использовать приватные константы для передачи опциональных аргументов в Ruby.

Did you know that you can use Bundler without Gemfile? — как использовать менеджер пакетов Bundler без Gemfile.

How to Reduce Test Interference in Minitest — как снизить вероятность случайных падений тестов при работе с фреймворком Minitest.

Rails Routes, HTTP Methods and SQL Queries — разбираемся с маршрутизацией в Ruby on Rails.

„!” and „?”: Understanding One of Ruby’s Coolest Naming Conventions — полезный для новичков гайд по использованию знаков „!” и „?” в именовании методов.

Here to stay — Analyzing RubyGems stats for 2018 — статистика по Ruby гемам от компании Infinum за 2018 год.

Ruby Interpreters: What You Need to Know — обзор различий в Ruby-интерпретаторах.

How to synchronize a directory between two remote hosts with rsync — используем библиотеку rsync для синхронизации директории между хостами.

How ActionCable broke Puma — какие проблемы возникают при использовании системного вызова select при увеличении количества активных соединений в ActionCable в связке с Puma.

Launching Your Own Ruby Gem (part 2): Popularizing it within the Ruby Community — вторая часть инструкции, как создать гем на Ruby.

TensorStream: Bringing Machine Learning to Ruby — машинное обучение на Ruby: знакомимся с фреймворком TensorStream.

Rails needs Active Deployment — автор высказывает свою точку зрения о сложностях с развертыванием приложений на production в Rails.

3 ActiveRecord Mistakes That Slow Down Rails Apps: Count, Where and Present — три ошибки при использовании ActiveRecord, которые могут замедлить приложения на Rails.

Partial application in Ruby — что такое частичное применение в Ruby и как его использовать.

Crafting user notifications in Rails with Active Delivery — инструкция, как реализовать функцию оповещения в Rails-приложениях при помощи гема Active Delivery.

A Modern Web Application With Rails — автор делится советами по созданию современного приложения на Rails.

What I’ve learned by doing The Gilded Rose Kata (4 refactoring tips) — советы по рефакторингу на основе подхода The Gilded Rose Kata.

Working With Legacy Code — How Refactoring Let Us Escape The Black Hole — авторы делятся опытом рефакторинга legacy-кода.

ValueSemantics—A Gem for Making Value Classes — как использовать гем ValueSemantics в приложении для написания Callable Objects.

Подборка от Andy Croll

Use Multiple Migrations When Adding Database Constraints — использование миграций при добавлении constraint в структуру базы данных.

Replace Timecop With Rails’ Time Helpers in RSpec — учимся использовать встроенные в Rails Time Helpers вместо библиотеки timecop.

Подборка от Appfolio Engineering

How Fast is the Released Ruby 2.6.0? — смотрим на показатели производительности Ruby 2.6.0.

A Short Speed History of Rails „Hello, World” — как создаются бенчмарки для разных версий Rails.

Подборка от AppSignal

Bindings and Lexical Scope in Ruby — что такое bindings и lexical scopes в Ruby.

An instrumental intro to GraphQL with Ruby — автор показывает, как использовать GraphQL в приложении на Ruby.

Подборка от BigBinary

Target Tracking Policy for Auto Scaling — как настроить Auto Scaling в сервисе AWS EC2 при помощи Target Tracking Policy.

Rails 6 adds ActiveRecord::Relation#pick — обзор метода Relation#pick в Ruby on Rails 6.

Replacing PhantomJS with headless Chrome — автор показывает, как использовать headless Chrome вместо PhantomJS.

Подборка от BoltOps

Serverless Ruby Cron Jobs Tutorial: Route53 Backup — в этом туториале автор показывает, как создать cron-задачу при помощи фреймворка Jets.

Serverless Slack Commands with Ruby: Fun with AWS Image Recognition — как создать command приложение для Slack на Ruby, используя фреймворк Jets.

Build an API with the Jets Ruby Serverless Framework — краткая инструкция, как создать API на AWS Lambda.

Подборка от Drifting Ruby

Default Ruby on Rails Options — простой способ ускорить конфигурацию приложения на Ruby on Rails.

Ruby on Rails 6.0 Beta 1 Deprecations — список изменений в компонентах, которые больше не поддерживаются в Ruby on Rails 6 beta 1.

Подборка от Drivy

Lambda composition in Ruby 2.6 — как создавать lambda-функции в Ruby 2.6.

Ruby tricks for junior developers — советы о Ruby для новичков.

Подборка от Igor Springer

Common mistakes that cause Ruby on Rails apps outages — наиболее частые ошибки, из-за которых падают Rails-приложения.

Is `Array` the only option for storing elements in Ruby? — какие структуры данных для списков значений существуют в Ruby.

Not-so-private constants in Ruby — детальный разбор приватных констант в Ruby.

Подборка от Jason Charnes

Using Ruby in 2019 — автор делится мнением о состоянии экосистемы Ruby.

Run.rb — инструмент для компилирования Ruby-кода в WebAssembly.

Подборка от Jason Swett

The Difference Between Integration Tests and Controller Tests in Rails — в чем разница между integration и controller тестами.

RSpec Mocks and Stubs in Plain English — простыми словами о mocks и stubs в RSpec.

Подборка от Mehdi Farsi

4 interesting examples using operator precedence in Ruby — освежаем в памяти приоритет операторов в Ruby.

Understanding the Eigenclass in less than 5 minutes — что такое Eigenclass в Ruby.

Гайд по созданию копии объекта в Ruby:

The Complete Guide to Create a Copy of an Object in Ruby: Part I

The Complete Guide to Create a Copy of an Object in Ruby: Part II

Подборка от Naturaily

How to remove old database migrations in Ruby on Rails — как убрать старые версии миграций базы данных в приложении на Rails.

Chain of responsibility pattern in Ruby on Rails — пример реализации шаблона проектирования Chain of responsibility на Ruby.

Подборка от Ombu Labs

Notes from The Complete Guide to Rails Performance’s Workshop — автор делится впечатлениями от воркшопа, посвященного производительности Ruby on Rails.

Consuming SendGrid and Twilio webhooks in Rails — как отслеживать статусы отправки Email и SMS сообщений при использовании сервисов SendGrid и Twilio.

Подборка от RubyGuides

What is A Matrix & How to Use It in Ruby? — способ создания матрицы в Ruby с помощью гема Daru.

How to Control a Web Browser From Ruby With Watir — учимся управлять веб-браузером из Ruby при помощи Watir.

Helpful Math Concepts For Ruby Developers — какие математические операции надо знать Ruby-разработчикам.

What is Dry-rb? — что такое стек гемов dry-rb и какие преимущества дает его использование.

Подборка от RubyPlus

Unix Signal Processing in Ruby — автор показывает, как обрабатывать Unix сигналы в Ruby.

Tracking Email Open in Rails — как реализовать функцию отслеживания открытия электронных писем в приложениях на Rails.

Ruby Bundler Setup — автор делится опытом конфигурации гема Bundler.

Подборка от Tomas Valent

How to upload remote file from url with ActiveStorage Rails — как реализовать функцию загрузки файлов через URL при помощи Active Storage.

Exporting and Importing large amount of data in Rails — автор показывает, как экспортировать и импортировать крупные объемы данных в приложениях на Rails.

Туториалы

Integrate Rails Application with React Using Webpacker Gem — как интегрировать React в Ruby on Rails при помощи библиотеки Webpacker.

101: Actual refactoring — real life story — автор на примере кода реального проекта показывает, как выполнить рефакторинг кода.

Ruby Bindings and Extensions — подробная инструкция, как интегрировать библиотеку на C в приложение на Ruby при помощи FFI.

How to turn my ActiveRecord migrations asynchronous? — автор описывает, как асинхронно произвести миграции в ActiveRecord при помощи созданного им гема RailsAsyncMigrations.

Using OAuth for a simple command line script to access Google’s data — как написать простой CLI-скрипт на основе OAuth для доступа к данным Google аккаунта.

How to use AWS Secrets Manager in Ruby on Rails — учимся использовать сервис AWS Secrets Manager в Ruby on Rails приложениях.

Server Side Rendering for React + Apollo GraphQL Client — инструкция, как настроить серверный рендеринг на React при помощи инструмента Hypernova.

Performance profiling for your Rails App with rack-mini-profiler — используем гем rack-mini-profiler, чтобы узнать, какие части вашего приложения на Rails нуждаются в оптимизации.

Extracting Text From Images Using Ruby — получение текста из изображений, используя Ruby.

Faster CSV downloads using Enumerator — инструкция, как ускорить загрузку csv-файлов, используя класс Enumerator в Ruby.

Гемы

Zeitwerk — ориентированный на многопоточное выполнение code loader для Ruby.

macinbox — библиотека запускает образ MacOS внутри Vagrant.

jb — простая и производительная альтернатива jbuilder.

Jets — фреймворк для построения serverless приложений.

События

Ruby Meditation #26 — не пропустите Ruby Meditation #26, которая пройдет 16 февраля в Киеве.

Открыта регистрация докладов на конференции:

Послушать

The Bike Shed

  • 184: Fun, Interesting, and I Wouldn’t Recommend It — ведущий подкаста и гость обсуждают много разных тем, в том числе развитие языка Ruby, использование JWT, RabbitMQ и т. д.
  • 185: The Transactional Fallacy — гость выпуска — Avdi Grimm, известный программист и ведущий скринкастов Ruby Tapas.

Ruby Rogues

RWpod

Ruby on Rails Podcast

Remote Ruby

  • Joined by Jason Swett — ведущий и гость подкаста обсуждают тестирование приложений на Ruby и работу с legacy-кодом.
  • Joined by Luca Guidi — выпуск Remote Ruby с создателем Ruby-фреймворка Hanami.
  • Personal Life, Turbolinks Android 1.x Deprecation, & Autoloading — участники дискуссии затрагивают много разных тем, в том числе многопоточность в Ruby и гем suggest_rb.
  • Joined by Eileen Uchitelle — история Eileen Uchitelle — одного из ведущих разработчиков в Rails Core Team.

Посмотреть

Ruby from Scratch 2019 — видеоуроки по основам Ruby для новичков.

Январские выпуски GoRails, в которых ведущий показывает, как реализовать функцию автосохранения черновиков в приложении на Rails, а также продолжает цикл скринкастов, посвященных развертыванию в production-окружение:

Подборка платных скринкастов от Drifting Ruby в январе, в которых ведущий показывает, как использовать фреймворк Action Text в приложении на Rails 5.2, как управлять сессиями в терминале, а также как работать с фреймворком VueJS в Rails:

Январские выпуски платных скринкастов от Ruby Tapas, которые научат вас множеству полезных вещей, в том числе как работать с асинхронным кодом, как использовать метод yield_self и как реализовать REPL:

Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на  kirill@rubygarage.orgДанный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Спасибо за помощь в подготовке дайджеста команде RubyGarage.


← Предыдущий выпуск: Ruby дайджест #25

Похожие статьи:
Всем привет, меня зовут Алексей Киселев, последние 10 лет я работаю в IT, половину этого срока в роли Java-разработчика, а половину — как...
Один з найбільших у світі автоконцернів Stellantis (обʼєднує бренди Alfa Romeo, Chrysler, Citroën, Dodge, Fiat, Jeep, Maserati, Opel, Peugeot та інші) придбав британський...
Компания HTC пока официально не представляла модель Desire 530, но один из голландских ритейлеров разместил страницу аппарата на своем...
Наразі ми можемо лише здогадуватися, які наслідки матиме коронакриза для ІТ-ринку цього року. Тому подивімося, що відбувалося...
Исследовательская фирма IDC выпустила очередной прогноз динамики изменения рынка смартфонов в 2015 году и ближайшие четыре года....
Яндекс.Метрика