Всем привет!
В октябре Ruby-комьюнити успело порадовать нас хорошими новостями. Прежде всего, были представлены обновленные версии языка Ruby и популярного фреймворка Hanami. Cообщество Ruby ведет активную работу над фреймворком Action Text, который войдет в состав Ruby on Rails 6 (не пропустите подборку новостей о Rails 6 от bogdanvlviv). Также обратите внимание, что в CircleCI добавлена поддержка GitHub Checks.
Почитать
Introducing Action Text for Rails 6 — что такое фреймворк Action Text, который будет включен в Ruby on Rails 6.
What is new in Rails 6.0 — подборка последних новостей о Ruby on Rails 6.
Upgrading GitHub from Rails 3.2 to 5.2 — Eileen Uchitelle из команды GitHub рассказывает об обновлении проекта до версии Ruby on Rails 5.2.1.
Cache Invalidation Complexity: Rails 5.2 and Dalli Cache Store — как избежать проблем в работе кэш-ключей при использовании Rails 5.2.
Working with ActiveRecord Callbacks — автор делится советами по использованию колбэков ActiveRecord в Rails-приложениях.
Code Audit: How to Provide the Best Quality for Your Ruby on Rails Application — как провести code audit приложения на Ruby on Rails.
Microservices vs spaghetti code are not your only options — автор рассматривает возможный вариант стандартизации архитектуры Passenger по примеру Kubernetes.
Meet Yabeda: Modular framework for instrumenting Ruby applications — знакомимся с Yabeda — фреймворком для сбора метрик в приложениях на Ruby.
How Devise keeps your Rails app passwords safe — разбираемся в деталях: как работает популярный гем Devise.
CircleCI launches support for GitHub Checks — инструмент CircleCI теперь поддерживает GitHub Checks.
Where Ruby/Sinatra falls short — что следует учитывать при разработке приложений на Sinatra.
Ruby Method Lookup, RubyVM.stat and Global State — автор подробно описывает, как и зачем избегать определения глобальных методов и констант.
Some notes on what’s going on in ActiveStorage — статья поможет разобраться с тем, как работает Active Storage в Ruby on Rails.
Pair With Me: Rubocop Cop that Detects Duplicate Array Allocations — учимся использовать популярный линтер RuboCop для ускорения производительности Rails-приложений.
12 Factor CLI Apps — знакомимся с методологией 12 factor app, разработанной компанией Heroku для создания
Destructuring Methods in Ruby — как выполнить деструктуризацию методов в Ruby.
Rails Parts — автор делится опытом реструктуризации приложения на Rails.
Ruby gotchas for the JavaScript developer — на что стоит обратить внимание JavaScript-разработчику при изучении Ruby.
Ruby Plotting with Galaaz: An example of tightly coupling Ruby and R in GraalVM — учимся строить графики на языке R в Ruby-приложениях при помощи библиотеки Galaaz.
Подборка от AppSignal
The Magic of Class-level Instance Variables — какие возможности дает использование class-level instance variables в разработке на Ruby.
The innards of a RubyGem — автор показывает, как создать гем без использования Bundler.
Building a Ruby C Extension From Scratch — краткая инструкция, как писать Ruby-расширения на языке C.
Подборка от BigBinary
Ruby 2.6 adds RubyVM::AST module — разбираемся с модулем RubyVM::AST в Ruby 2.6.
Ruby 2.6 Range#cover? now accepts Range object as an argument — метод Range#cover? в Ruby 2.6 принимает объекты класса Range в качестве аргументов.
Rails 5.2 adds DSL for configuring Content Security Policy header — в Rails 5.2 добавлен DSL для конфигурации Content Security Policy.
Rails 5.2 disallows raw SQL in dangerous Active Record methods preventing SQL injections — версия 5.2 фреймворка Ruby on Rails не разрешает использование чистого SQL для предотвращения SQL injections.
Skip devise trackable module for API calls to avoid users table getting locked — автор делится опытом решения проблемы, связанной с работой модуля trackable, при использовании популярного гема Devise.
Подборка от Bozhidar Batsov
A Better Way to Compare Versions in Ruby — как сравнивать версии при разработке на Ruby.
A Safer RuboCop — автор рассказывает о безопасном автоисправлении в RuboCop.
Подборка от Igor Springer
5 security issues in Ruby on Rails apps from real life — автор на основе собственного опыта перечисляет пять уязвимостей в Ruby on Rails приложениях.
How to log HTTParty requests — как регистрировать все запросы, посылаемые гемом httparty.
`ActiveSupport::StringInquirer` magic — как и зачем использовать класс ActiveSupport::StringInquirer.
`ActiveSupport::ArrayInquirer` and even more Rails magic — разбираемся с классом ActiveSupport::ArrayInquirer.
Подборка от Jason Swett
What Exactly Makes «Bad» Code Bad?— автор делится своим мнением о том, что такое плохой код и почему.
How to See Your Feature Specs Run in the Browser — как запускать feature tests в браузере.
Factories and Fixtures in Rails — обзор трех способов генерации тестовых данных в приложениях на Rails.
Подборка от Josef Strzibny
Debugging silently failing compilation aka Webpacker can’t find application.js in public/packs/manifest.json — автор делится опытом отладки ошибок компиляции при использовании Webpacker.
Building auto login for fast Rails development with Sorcery — простой способ ускорить процесс разработки ПО при помощи автоматической аутентификации.
Подборка от Mehdi Farsi
5 Ruby Tips You Probably Don’t Know — автор описывает пять возможностей языка Ruby, о которых многие разработчики не знают.
The Evolution of Ruby Strings from 1.8 to 2.5 — освежите в памяти, какие изменения произошли с классом String от версии Ruby 1.8 до 2.5.
Why the Ruby community encourages Duck Typing — автор делится мнением, почему сообщество Ruby поощряет duck typing.
The short guide to learning how Classes work in Ruby — этот краткий гайд поможет новичкам изучить, как работают классы в языке Ruby.
Подборка от reinteractive
How to structure JavaScript code when using AJAX in Rails — два способа структурировать JavaScript-код при использовании AJAX в приложениях на Rails.
To Microservice or Monolith, that is the question — автор делится мыслями о выборе архитектуры приложения.
Подборка от RubyGuides
How to Check If a Variable is Defined in Ruby — как проверить, инициализирована ли переменная в Ruby.
Understanding The Differences Between Puts, Print & P — освежаем в памяти, в чем разница между тремя способами вывода данных в Ruby.
How to Use RSpec Mocks (Step-By-Step Tutorial) — пошаговый туториал об использовании mocks в тест-фреймворке RSpec.
How to Use the Ruby Grep Method (With Examples) — автор показывает, как использовать метод grep в Ruby с подробными примерами.
How to Read & Parse CSV Files With Ruby — как считывать и записывать csv-файлы, а также какие существуют конвертеры и гемы для работы с ними.
How to Use Ruby Any, All, None & One — детальный разбор четырех методов Enumerable.
What is Ruby on Rails?— обзорная статья о Ruby on Rails: философия фреймворка, причины стать Rails-разработчиком и как начать изучение Rails.
How to Use The Ruby Map Method (With Examples) — как использовать метод map в Ruby.
Understanding Method Visibility In Ruby — в чем разница между public, private и protected методами в Ruby.
How To Delegate Methods in Ruby — автор показывает несколько способов делегирования методов в Ruby.
Подборка от thoughtbot
Tab completion in GNU Readline: Ruby edition — как реализовать автозаполнение в командной строке при помощи GNU Readline в Ruby.
Writing Less Error-Prone Code — автор делится советами, как писать более качественный код.
Туториалы
How to Build Chat into Ruby on Rails Applications — как реализовать live chat в приложении на Ruby on Rails.
Simplifying internal validations using Dry-Validation — учимся отделять валидацию данных от бизнес-логики при помощи гема dry-validation.
How we halved our memory consumption in Rails with jemalloc — автор показывает, как сократить использование памяти в Rails-приложении при помощи менеджера памяти jemalloc.
Scale Out Multi-Tenant Apps based on Ruby on Rails — инструкция по горизонтальному масштабированию многопользовательских приложений на Ruby on Rails.
Using Ruby on Rails 5.2 Active Storage — как настроить Active Storage при работе с версией 5.2 фреймворка Ruby on Rails.
How to Use Repository Pattern with Active Record — автор показывает, как использовать repository pattern при работе с Active Record в приложениях на Rails.
How to: Execute RSpec in parallel locally — как обеспечить параллельное выполнение тестов RSpec в локальном окружении.
Launching Your Own Ruby Gem — Part 1: Build It — первая часть подробной инструкции, как создать гем.
Testing Ruby’s CGI — как тестировать CGI в Ruby.
Ruby async await — автор рассказывает, как реализовать функцию async await в Ruby.
Custom URLs in Ruby on Rails: How you can use descriptive slugs instead of IDs — как реализовать настраиваемые URL в приложении на Rails.
Ruby and Rack: The beginning — разбираемся, как Rack взаимодействует с веб-серверами Webrick, Mongrel, Thin и Puma.
Handling exceptions in Rails API applications — автор делится опытом обработки исключений в Rails API приложениях.
How to use HMAC-SHA256 to connect to a REST API like Ticketmatic — краткая инструкция, как соединиться с REST API, если используется алгоритм HMAC-SHA256.
Цикл статей о создании data API при помощи Ruby on Rails 5:
- Building a data API with Ruby on Rails 5: Part 1 — Setup and Routing
- Data Aggregation API in Rails 5: Part 2 — Testing Philosophies and Approach
Релизы
Ruby 2.5.3 — вышла версия 2.5.3 языка Ruby.
Hanami 1.3.0 — представлена версия 1.3.0 популярного фреймворка Hanami.
Ruby Gems
minitest-mock_expectations — гем для подтверждения вызова метода при работе с фреймворком Minitest.
Salus — инструмент для координации работы сканеров уязвимостей.
Enkrip — гем шифрует и дешифрует атрибуты моделей Active Record.
OurPC — экспериментальная реализация gRPC клиента и сервера.
События
Ruby Meditation #24 — 3 ноября в Киеве пройдет Ruby Meditation #24. Темы включают domain-driven design в Rails, runtime model в Ruby, оптимизацию Capybara.
Конференции
RubyConf 2018 — с 13 по 15 ноября в Лос-Анджелесе (США) проходит конференция RubyConf 2018; конференцию открывает создатель языка Ruby Yukihiro ’Matz’ Matsumoto.
Послушать
The Bike Shed
172: What I Believe About Software — ведущий и гость подкаста обсуждают основные составляющие процесса разработки ПО: что такое story points, когда делать рефакторинг и code review и т. д.
175: Tell Me When It’s Real — участники дискуссии обсуждают новейшие тренды в мире веб-разработки.
Ruby Rogues
RR 382: «When to Build... When to Buy» with The Panelists — участники дискуссии обсуждают, стоит ли создавать новые инструменты или же покупать сторонние решения.
RR 383: «Rbspy: A New(ish) Ruby Profiler!» with Julia Evans — главная тема подкаста — профайлер Ruby Spy.
RR 384: «Sonic Pi» with Sam Aaron — в гостях у ведущих Sam Aaron — разработчик среды программирования для создания музыки Sonic Pi.
RR 385: «Ruby/Rails Testing» with Jason Swett — в гостях у Ruby Rogues Jason Swett — ведущий подкаста The Ruby Testing.
RR 386: Web Console Internals with Genadi Samokovarov — основная тема подкаста — использование веб-консоли для отладки приложений на Ruby.
RWpod
- 39 выпуск 06 сезона. Upgrading GitHub from Rails 3.2 to 5.2, Trix 1.0.0, SystemJS 2.0.0, Browserino, TurtleDB, Tabulator и прочее
- 40 выпуск 06 сезона. Ruby 2.6 adds RubyVM::AST module, Action Text for Rails 6, Hacktoberfest 2018, Falcon, Cogear.JS и прочее
- 41 выпуск 06 сезона. The Evolution of Ruby Strings, JavaScript Visualizer, FaaStRuby, Favicon Checker, ProbaClick и прочее
- 42 выпуск 06 сезона. Upcase is Now Free, ActiveSupport::StringInquirer magic, Spok, Evergreen, Omi, Colorblindly и прочее
- 43 выпуск 06 сезона. Hanami v1.3.0, Node v11.0.0, Storybook 4.0, React v16.6.0, Enkrip, IronDB, Lazy-brush и прочее
Ruby on Rails Podcast
246: Trust Arts, Trust Rails with Patrick FitzGerald and Danielle Greaves — участники дискуссии обсуждают свои любимые аспекты фреймворка Ruby on Rails.
247: Introducing Action Text for Rails 6 with Javan Makhmali — выпуск посвящен фреймворку Action Text, который войдет в состав Ruby on Rails 6.
248: Diving Into Ruby Weekly with Peter Cooper — ведущая подкаста беседует с Peter Cooper — редактором рассылки Ruby Weekly.
The Ruby Testing Podcast
013 — The Balance Between Testing and Feature Development with Dave Kimura — как найти баланс между написанием функционального кода и тестов.
014 — Chris Oliver, Creator of GoRails — ведущий и гость подкаста обсуждают множество тем, в том числе integration и unit tests, а также тест-фреймворк Cucumber.
016 — Fast Tests with Vladimir Dementyev — участники дискуссии обсуждают, как ускорить прохождение тестов на Ruby.
Remote Ruby
What else can Rails add by default?— участники подкаста обсуждают обновление GitHub до Rails 5.2, фреймворк Action Text, необходимость добавить полнофункциональную встроенную аутентификацию в Rails.
The Yak Shave
4: Folks are in a Stink — ведущий и гость подкаста обсуждают важность документации в процессе разработки ПО, а также делятся советами по работе с базами данных, API и т. п.
5: A Series of Anecdotes — участники дискуссии обсуждают важность обратной связи (feedback) при разработке open source software.
6: The Podcast After the Last Podcast — послушайте, что такое WebAssembly и как его можно использовать в веб-разработке.
Посмотреть
Alpha preview: Action Text for Rails 6 — создатель Ruby on Rails David Heinemeier Hansson рассказывает о фреймворке Action Text, который войдет в состав Ruby on Rails 6.
Октябрьские выпуски GoRails, в которых ведущий продолжает серии скринкастов о nested comments и ElasticSearch, показывает, как создать приложение на основе Slack slash-команд, а также как использовать гем name_of_person:
- Deleting Comments In Nested Threads
- Reddit style comment thread pagination
- Handling First & Last Name with the name_of_person gem
- How to Build a Slack Slash Command App with Rails
- Search Filters with ElasticSearch Aggregations
Подборка платных скринкастов от Drifting Ruby в октябре:
- #154 Service Objects for API Interactions with Twilio
- #155 Friend Requests From Scratch
- #156 Friend Requests Views, Controllers, and Model Methods
- #157 Nested Comments from Scratch
Выпуски платных скринкастов от Ruby Tapas за октябрь:
- JSON API in Rails — Part 1
- JSON API in Rails — Part 2
- Smaller Objects, Faster Code
- Github Flow Automation
- From Math to Code
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #22