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:

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


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

Похожие статьи:
Всем привет! В этом номере вы найдете наиболее достойные материалы за июнь-июль, среди тех что попали ко мне в руки. Несмотря на то, что...
С 11 июня по 7 июля 2018 года мы проводили очередной анонимный зарплатный опрос, в котором приняли участие 9610 человек. Исходные данные...
Меня зовут Максим, я работаю тестировщиком ПО, с интересом слежу за событиями в мире тестирования и IT. Самое полезное собираю...
Кожного третього четверга у травні Україна святкує День вишиванки. Подивимось, як це було в IT-компаніях. Для зручності...
Компания LG объявила о международном выпуске смартфонов серии X. Напомним, эта линейка из двух моделей - LG X cam и LG X screen - была...
Яндекс.Метрика