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 — как написать простой
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 февраля в Киеве.
Открыта регистрация докладов на конференции:
- RubyConfBY 2019 — до 17 февраля.
- RubyDay 2019 — до 20 февраля.
- EuRuKo’19 — до 28 февраля.
Послушать
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
- RR 395: Ruby in the Forbidden Land with Nathan Ruehs
- RR 396: GraphQL at Product Hunt with Radoslav Stankov
- RR 397: Oracle with Karthik Gaekwad
RWpod
- 01 выпуск 07 сезона. Ruby 2.6.0 Released, Bundler 2, TensorStream, How To Learn CSS, FBT, Readlint, Bandersnatch Life и прочее
- 02 выпуск 07 сезона. Exploring a critical Net::Protocol issue in Ruby 2.6.0p0, Rubyoshka, Anime.js, React Kawaii и прочее
- 03 выпуск 07 сезона. Kramdown 2.0.0, Dynamic ActiveRecord columns, Amplify, Shiny, NES-style CSS Framework и прочее
- 04 выпуск 07 сезона. Run.rb, How ActionCable broke Puma, Node worker threads, The Great Divide, Hotkey Behavior, Flexbox ninja и прочее
Ruby on Rails Podcast
- 255: Submit Your Railsconf CFP with Marty Haught — подкаст посвящен конференции RailsConf 2019, которая пройдет 30 апреля — 2 мая в Миннеаполисе (США).
- 256: Empowering Founders with Emily Wazlak from Shine Registry — гость подкаста делится опытом основания стартапа на RoR.
- 257: Apprenticing at thoughtbot with Sarah Dawson — выпуск посвящен стажировке в компании thoughtbot и разнице между junior- и senior-разработчиками.
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-окружение:
- Security Hardening Servers with Fail2Ban
- Server Administration with Cockpit
- Autosave Draft Records — Part 1
- Autosave Draft Records — Part 2
Подборка платных скринкастов от Drifting Ruby в январе, в которых ведущий показывает, как использовать фреймворк Action Text в приложении на Rails 5.2, как управлять сессиями в терминале, а также как работать с фреймворком VueJS в Rails:
- #167 Using Action Text in a Rails 5.2 Application
- #168 Getting Started with VueJS
- #169 Rails Scaffold with VueJS
- #170 Managing Terminal Sessions
Январские выпуски платных скринкастов от Ruby Tapas, которые научат вас множеству полезных вещей, в том числе как работать с асинхронным кодом, как использовать метод yield_self и как реализовать REPL:
- Episode #473: Contextual Identity Part 2
- Episode #558: yield_self
- Episode #559: Full Utilization
- Episode #560: API Exploration
- Episode #561: Building a REPL
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #25