Ruby/Rails дайджест #28: важливі оновлення для кількох версій Ruby on Rails, реліз Ruby 2.5.5 і 2.6.2
Всім привіт! Почнемо з того, що команда розробників Ruby on Rails викотила ряд оновлень, які усувають уразливості у версіях 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1 і 6.0.0.beta3. Також спільнота Ruby продовжує вивчати функціональні особливості фреймворку Ruby on Rails 6 (зверніть увагу на добірку статей від BigBinary).
Тренди в співтоваристві Ruby
- В Ruby on Rails виявлені вразливості, і команда розробників якомога швидше встановити оновлення.
- Юкихиро «Matz» Мацумото , що міцне співтовариство формується тільки навколо працюючого програмного продукту.
- За Noah Gibbs, останні версії Ruby, а саме 2.5 та 2.6, стабільніше, ніж попередні.
- Ruby 2.6 на 10 тис. масивів менше, ніж версія 2.5.
Релізи
Rails 5.2.3 — представлена версія 5.2.3 фреймворку Ruby on Rails.
Rails 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, and 6.0.0.beta3 — команда розробників Rails викотила ряд оновлень, в яких виправлено ряд серйозних вразливостей.
Rails 5.1.7 — вийшла стабільна версія Rails 5.1.7.
Ruby 2.6.2 — реліз патч-версії Ruby 2.6.2.
Ruby 2.5.5 — новий патч Ruby 2.5.
Jekyll 4.0.0.pre.alpha1 — вийшла перша альфа-версія інструменту Jekyll.
Webpacker 4.0.2 — популярний гем Webpacker був оновлений до версії 4.0.2.
Почитати
What causes Ruby memory bloat? — у чому причина надмірного використання пам'яті додатками на Ruby.
March 2019 Security Advisories — свіжий список вразливостей менеджера пакетів RubyGems.
Testing Ruby on Rails Migrations — як тестувати міграції даних.
Do you really know public, private and protected in Ruby? — детальний розбір public, private, і protected методів в Ruby.
How (not) to integrate Elasticsearch testing with RSpec — автор ділиться досвідом написання тестів з допомогою RSpec в додатку, що використовує Elasticsearch.
Ruby Trickery — цікаві кейси застосування Ruby від Ryan Bigg.
Solving Slack-Side Disconnects in slack-ruby-client — як вирішити проблему втрати з'єднання Slack-ботами на Ruby при використанні slack-ruby-client.
Why I Believe Rails is Still Relevant in 2019 — автор перераховує причини, чому Ruby on Rails залишається затребуваним інструментом в 2019 році.
Building Autocomplete With DynamoDB and Lambda — як реалізована функція автозаповнення ключів в сервісі Honeybadger.
Ruby 2.7 — Numbered Parameters — в Ruby 2.7 будуть додані numbered parameters; що це і як їх використовувати.
Using Que instead of Sidekiq — автор ділиться досвідом використання інструменту Que замість Sidekiq для управління фоновими завданнями.
Cables vs. malloc_trim, or yet another Ruby memory usage benchmark — ще один бенчмарк використання пам'яті в Ruby.
An RSpec time issue (and it's not due to timezones) — автор описує проблему, пов'язану з тестом, який не проходив тільки в певний час доби.
Function/Method look up in Elixir/Ruby — автор порівнює реалізацію пошуку функцій і методів у Elixir і Ruby.
A Deep Dive into Routing and Controller Dispatch in Rails — детальний розбір маршрутизації в Rails.
— огляд нових функцій в Ruby on Rails 6.
How we Built a Highly Performant App with Ruby on Rails and Phoenix — як створити високопродуктивне додаток, що працює на основі Ruby on Rails/Ruby і Phoenix/Elixir.
A Deep Dive into TensorStream — короткий гайд по основам фреймворку TensorStream для машинного навчання на Ruby.
Seven Ways to Fortify Your Application — сім способів забезпечити стабільну роботу додатка.
Enumerating over large datasets in Ruby — як працює перерахування великих обсягів даних за допомогою модуля перечіслімого в Ruby.
Для новачків
Ruby's Many CLI Option Flags & How To Use Them — як використовувати option flags при роботі в командному рядку.
How to Use AJAX With Ruby on Rails — докладний розбір, як застосовувати AJAX в Ruby on Rails.
How to Tell Your Ruby Program to Stop Running Early — як зупинити виконання програми на Ruby.
Understanding Ruby: Scope & Binding Objects — області видимості в Ruby.
Value objects in Ruby — що таке value objects в Ruby.
How to React on Rails — як підключитися React до додатка на Ruby on Rails.
Securely transfering files to server — інструкція, як безпечно передати файли на сервер.
Quick and easy admin options — які інструменти в арсеналі Ruby-розробників допомагають швидко реалізувати функціонал адміністрування.
Advanced Searching of Emails using ElasticSearch and Rails 5.2 — інструкція, як реалізувати розширений пошук електронних листів за допомогою ElasticSearch в Rails 5.2.
A Rails testing «hello world» using RSpec and Capybara — з чого почати тестування програми на Rails.
Добірка від Andy Croll
Don't use instance variables in partials — чому не варто використовувати instance variables в часткових уявленнях (partial views).
Protect your sign up form with Rack::Attack — як захистити сторінку реєстрації за допомогою Rack::Attack.
Добірка від Appfolio Engineering
Ruby Register Transfer Language — But How Fast Is It on Rails? — бенчмарки продуктивності Ruby з використанням Register Transfer Language.
Benchmarking Hongli Lai's New Patch for Ruby Memory Savings — наскільки ефективний патч для скорочення використання пам'яті в Ruby.
Добірка від AppSignal
Ruby's Hidden Gems, StringScanner — як використовувати гем StringScanner для парсингу рядків.
Object Marshalling in Ruby — що таке marshalling і як використовувати модуль Marshall в Ruby.
Добірка від Arkency
Optimizing test suites when using Rails Event Store — як оптимізувати тести при використанні Rails Event Store.
A scary side of ActiveRecord's find — автор на прикладах описує сценарій, при якому метод #find в ActiveRecord демонструє некоректну поведінку.
Добірка від BigBinary
MJIT Support in Ruby 2.6 — що таке JIT-компілятор в Ruby 2.6.
Цикл статей про Ruby on Rails 6:
- Rails 6 adds negative scopes on enum — в Rails 6 додана можливість використання negative scopes в значеннях перераховується типу.
- Rails 6 adds ActiveRecord::Relation#touch_all — як використовувати метод #touch_all в Rails 6.
- Rails 6 adds delete_by and destroy_by as ActiveRecord::Relation methods — автор показує, як використовувати методи #delete_by і #destroy_by в Rails 6.
- Rails 6 shows unpermitted params in logs in color — в Rails 6 сильні параметри виділяються кольором.
- Rails 6 changed ActiveRecord::Base.configurations result to an object — в Rails 6 ActiveRecord::Base.configurations повертає не hash, а об'єкт.
- Rails 6 raises ActiveModel::MissingAttributeError when update_columns is used with non-existing attribute — в Rails 6 метод #update_columns викликає помилку MissingAttributeError, якщо атрибут не знайдено.
- Rails 6 adds create_or_find_by and create_or_find_by! — в Rails 6 додано методи create_or_find_by і create_or_find_by.
- Rails 6 adds ActiveModel::Errors#slice! — в Rails 6 доданий метод #slice!, застосовний до ActiveModel::Errors.
- Rails 6 shows routes in expanded format — в Rails 6 маршрути обробки запитів відображаються у більш зручному форматі.
Добірка від BoltOps
Kinesis and AWS Lambda with Ruby on Jets — як підключити Kinesis Events до функцій AWS Lambda за допомогою фреймворку Jets.
DynamoDB Stream Events and AWS Lambda with Ruby on Jets — автор розповідає, як підключити DynamoDB Stream Events до функцій AWS Lambda за допомогою фреймворку Jets.
Добірка від Igor Springer
Why don't we validate controller parameters? — навіщо і як валідувати параметри контролерів.
How Ruby 2.6 allowed me to do another open source contribution — автор ділиться досвідом участі в open-source проектах на прикладі коміта в Ruby 2.6.
Добірка від Jason Swett
Sometimes it's better for tests to hit the real API — автор на прикладі власного досвіду показує, чому тести краще проганяти на працюючому API.
Code smell: long, procedural background jobs (and how to fix it) — чому важливо писати тести для фонових завдань.
Добірка від reinteractive
Working on inherited code bases — поради по роботі з legacy-кодом.
How to craft a feature the right way — автор ділиться підходом до розробки фичей програми.
Добірка від Scott Watermasysk
Proxying Requests To Heroku Via Caddy Server — інструкція, як перенаправляти запити додатком на Heroku через сервер Caddy.
Multiple Heroku Environments — автор ділиться досвідом роботи з різними середовищами на Heroku.
Добірка від thoughtbot
Ruby under the influence [of Scala] — на основі власного досвіду, автор порівнює, як реалізовані деякі функції в Ruby під впливом Scala.
Services are Not a Silver Bullet — автор говорить про недоліки SOA-архітектури в додатках.
Туторіали
CI/CD for Microservices on DigitalOcean Kubernetes — як налаштувати CI/CD для микросервисов за допомогою Docker і DigitalOcean Kubernetes на прикладі Ruby-додатки на фреймворку Sinatra.
How to use Docker Compose for Rails development: Do not install in bundle Dockerfile.dev — інструкція, як використовувати Docker Compose в розробці додатків на Rails.
How to Build a Dynamic Website Using Google Sheets and Sinatra — як створити веб-додаток за допомогою Google Sheets API і фреймворку Sinatra.
Profile Ruby & Rails Apps With rbspy in RubyMine — інструкція, як виконати профайлинг додатків на Ruby за допомогою інструменту rbspy в IDE RubyMine.
Using ActiveStorage in Rails API-apps — короткий гайд по використанню ActiveStorage в API на Rails.
How to download image files in Ruby — як реалізувати функцію скачування зображень за допомогою open-uri і Down.
Геми
StoreModel — бібліотека дозволяє маніпулювати JSON-атрибутами як моделями ActiveRecord.
Rubyfmt — інструмент для форматування коду на Ruby.
Himl — мова розмітки HTML.
Sidekiq statistic — гем для відображення статистики роботи Sidekiq-воркеров.
Truemail — конфігурована бібліотека для валідації адрес електронної пошти.
Книги
Rails Testing for Beginners — Jason Swett випустив покроковий гайд про тестування додатків на Rails.
Конференції
RubyKaigi 2019 — 18-20 квітня в Фукуоці (Японія) відбудеться конференція RubyKaigi; серед доповідачів такі гучні імена, як Matz, Aaron Patterson, Sam Phippen і Maciej Mensfeld.
RubyConfBY 2019 — 6 квітня пройде конференція RubyConfBY.
RubyHack 2019 — 4 і 5 квітня в місті Sandy (США) проводиться конференція RubyHack.
Ruby Wine — 13 квітня в Кишиневі пройде конференція Ruby Wine.
Послухати
The Bike Shed
- 189: it's Gonna Work, Definitely, No Problems Whatsoever — учасники дискусії обговорюють тестування сторонніх API, використання винятків та інше.
- 191: Open Source is Created By Humans (Devon Zuegel) — подкаст присвячений створенню та підтримці з відкритим вихідним кодом.
- 192: I don't Want to Think That Hard — основна тема випуску — функціональне програмування.
Ruby Rogues
- RR 402: Ruby 2.6.0 Bugs, Kafka, and Karafka — детальний огляд фреймворків Kafka і Karafka.
- RR 403: Rails Needs Active Deployment — учасники дискусії обговорюють складність процесу розгортання додатків на Rails.
- RR 404: Ruby Bindings & With Extensions FFI — основна тема випуску — Ruby bindings — що це, коли їх використовувати, а також у чому переваги і недоліки.
- RR 405: Rubymotion with Lori Olson — подкаст присвячений IDE RubyMotion, яка дозволяє писати крос-платформні додатки на Ruby.
RWpod
- 09 випуск 07 сезону. Rails 6 adds support for timezones to Active Job, .dev for all, renchKiss.js JavaScript SEO та інше
- 10 випуск 07 сезону. Webpacker 4.0.2, Storybook 5.0, Rubygems: March 2019 Security Advisories, Mruby/c, RFS та інше
- RWPod Кафе 9: Katrina Owen
- 11 випуск 07 сезону. Ruby 2.6.2, Rails 6.0.0.beta3, React Native 0.59, CKEditor 5 v12.0.0, Firefox Send та інше
- 12 випуск 07 сезону. React Router v5, React-Redux v7.0.0-beta.0, Cables vs. malloc_trim, Helix, Lamby, Flexulator, DropCSS та інше
Ruby on Rails Podcast
- 263: Abstractions and Generalist Strategy with Sarah Withee — гість подкасту ділиться порадами, як бути гарним спікером на конференціях.
- 265: Rails 6 Showcase Showdown with Edouard Chin — випуск присвячений новинкам в Ruby on Rails 6.
Remote Ruby
- Joined by Tim Riley — гість подкасту — один з провідних розробників dry-rb Tim Riley.
- Joined by Javan Makhmali and Sam Stephenson — у цьому випуску гості подкасту розповідають про свій досвід в програмуванні, а також про роботу в Basecamp.
- Joined by Avdi Grimm — гість випуску — відомий Ruby-програміст і ведучий скрінкасти RubyTapas Avdi Grimm.
- Joined by Jesus Castello — учасники дискусії обговорюють навчання Ruby, а також зачіпають багато цікаві теми, в тому числі нові функції в Rails 6.
Ruby Testing
- 023 — Chris Toomey, Development Director at thoughtbot — ведучий і гість подкасту обговорюють підхід test-driven development (TDD).
- 024 — Kent Beck, Author of Test-Driven Development: By Example — в гостях у ведучого Kent Beck — автор книги Test-Driven Development by Example.
Подивитися
Стріми від Антона Давидова:
- Event sourcing: events, event store, projections (part 1) — стрім по темі event sourcing від 27 березня.
Березневі випуски платних скрінкасти GoRails:
- Strong Passwords with HaveIBeenPwned — як перевірити, чи безпечні паролі користувачів, за допомогою HaveIBeenPwned Password API.
- How to use ActionText — знайомство з фреймворком ActionText в Ruby on Rails 6.
- @mentions for Users with ActionText in Rails 6 — як згадувати користувачів за допомогою @mentions у фреймворку ActionText.
- User Onboarding Progress Bar — автор показує, як реалізувати функціонал адаптації користувачів у додатку на Rails.
Підбірка платних скрінкасти від Drifting Ruby у березні:
- #175 what's New in Rails 6 — огляд нових функцій в Rails 6.
- #176 Ecommerce Store with Solidus — як створити онлайн-магазин на платформі Solidus.
- #177 Interview with Jesus Castello — інтерв'ю з Jesus Castello про фреймворку Roda.
- #178 Using Webpacker in Rails 6 — поради по використанню Webpacker в Rails 6.
- #179 Creating a Gem From Existing Code — як винести певну бізнес-логіку Rails-додатки в окремий гем.
Підбірка платних скрінкасти RubyTapas в березні:
- #567 Serverless Ruby with AWS Lambda — як створити serverless-додаток на Ruby на платформі AWS Lambda.
- #568 Polymorphic Attributes in Rails — Part 1 — як використовувати кастомні атрибути, щоб завантажувати і зберігати структуровані дані в Rails.
- #569 Polymorphic Attributes in Rails — Part 2 — як працювати з атрибутами, які можуть використовувати кілька типів даних.
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage .
? Попередній випуск: Ruby дайджест #27
Опубліковано: 06/04/19 @ 10:00
Розділ Різне
Рекомендуємо:
Прогнозування на стороні клієнта за допомогою TensorFlow.js
DOU Books: 5 книжок про дизайн-рішення від Андрея Русакова, Principle Experience Designer у SoftServe
Чи повинна картка товарів бути унікальною?
Еволюція зарплат: як Senior ASP.NET розробник доріс до $5000
DOU Проектор: Kattana — професійний торговий термінал для криптовалют