Всем привет!
В августе вышла стабильная версия Rails 5.2.1, а популярный тест-фреймворк RSpec обновился до версии 3.8. Сообщество Ruby продолжает изучать Ruby 2.6 — не пропустите серию статей от BigBinary. Чтобы быть в курсе последних тенденций в мире Ruby, посмотрите подборку видео с прошедшей в конце августа конференции EuRuKo 2018.
Почитать
Advanced client stubbing in the AWS SDK for Ruby Version 3 — подробная инструкция, как выполнять client stubbing в версии 3 AWS SDK для Ruby.
Finding where STDOUT/STDERR debug messages are coming from — как узнать, откуда поступают отладочные сообщения stdout и stderr.
Designing Services with dry-rb — как проектировать service objects при помощи библиотеки dry-rb.
Dependency Injection Containers vs Hard-coded Constants — узнайте, в чем разница между контейнерами внедрения зависимостей и hard-coded константами.
Indexes on Rails: How to Make the Most of Your Postgres Database — как ускорить работу Rails-приложения посредством оптимизации индексов в PostgreSQL.
Statements and Expressions in Ruby — разбираем statements и expressions в Ruby на примере кода из гема Sequel.
Adding Code Quality Checks To Your Ruby Test Suite — новичками будет полезно узнать, как добавить инструменты статического анализа кода в набор тестов Rails-приложения.
Rails and the Single Responsibility Principle — насколько Single Responsibility Principle (первый из принципов SOLID) соотносится с фреймворком Ruby on Rails.
Migration from the Wordpress to the own Ruby blogging engine — pros and cons — автор рассказывают о плюсах и минусах перехода с Wordpress на написанную им самим блог-платформу на Ruby.
The Case of the Flaky Test Suite — автор делится опытом работы с набором Flaky тестов в Rails-приложении.
Visualize Ruby Execution — как отобразить выполнение кода на Ruby.
Runtime Introspection in Ruby — автор показывает, как провести интроспекцию методов, переменных и объектов в Ruby.
Ruby Memory Profiling in Practice — краткий гайд по профилированию памяти в Ruby.
Flexible Ruby on Rails Reader Objects — автор на примере показывает, как использовать reader objects в приложении на Rails.
Clean Module Injection in Ruby — как применить monkeypatching посредством внедрения модуля в Ruby и какие преимущества это дает.
The Curious Incident of the Shadow in the Run-Time — узнайте о «подводных камнях» сокрытия переменных в Ruby.
Scaling at Instacart: Distributing Data Across Multiple Postgres Databases with Rails — разработчик из компании Instacart делится опытом масштабирования баз данных PostgreSQL в Rails-приложении.
Testing APIs in Ruby: An overview — автор на основе собственного опыта перечисляет несколько способов тестирования API клиентов в Ruby.
Rails Console Magic Tricks — семь полезных «трюков», которые упрощают работу со встроенной в Rails консолью.
Best image uploader for Rails — Revisited — автор на основе собственного опыта перечисляет лучшие загрузчики файлов для Rails.
Подборка от Andy Croll
Delegate to simplify your code — как избавиться от избыточного кода при помощи метода delegate компонента Active Support.
Use the presence method — как и зачем использовать метод presence компонента Active Support.
Подборка от Appfolio Engineering
How Can I Use Ruby 2.6 JIT?— презентация Noah Gibbs на конференции Southeast Ruby.
Does ActionCable Smell Like Rails?— разбираемся, что такое Action Cable и как его использовать для работы с WebSockets.
Rake Does What?: A Debugging Story — автор рассказывает об ошибке, связанной с Rake, при обновлении одного из проектов до Rails 5.0 и продолжает детально разбирать причину ошибки в статье Ruby’s Main Object Does What?
Подборка от AppSignal
Changing the Way Ruby Creates Objects — автор описывает, как изменить поведение создания объектов в Ruby.
Ruby gem 2.7: Improvements and bug fixes — что нового в версии 2.7.0 гема AppSignal.
Rails Collection Caching — collection caching в Ruby on Rails.
Push and Pub/Sub in Ruby — как создать Rails-приложение, которое передает данные при помощи модели Publish/Subscribe.
Подборка от BigBinary
Setting up a high performance Geocoder — учимся настраивать геокодирование при помощи гема Geocoderв Rails-приложении.
Продолжение цикла о Ruby 2.6:
- Ruby 2.6 adds Enumerable#filter as an alias of Enumerable#select — в Ruby 2.6 в качестве псевдонима для метода Enumerable#select добавлен метод Enumerable#filter.
- Ruby 2.6 Introduces Dir#each_child and Dir#children instance methods — в Ruby 2.6 представлены методы экземпляра Dir#each_child и Dir#children.
- Ruby 2.6 adds write_timeout to Net::HTTP — в Ruby 2.6 в библиотеку Net::HTTP добавлен атрибут write_timeout.
- Ruby 2.6 adds support for non-ASCII capital letter as a first character in constant name — в Ruby 2.6 добавлена поддержка не-ASCII символов в качестве первой буквы в названиях классов и модулей.
Подборка от Codemancers
Ruby 2.5 adds KeyError#receiver and KeyError#key — в Ruby 2.5 добавлены методы KeyError#receiver и KeyError#key, которые упрощают исправление ошибок в коде.
Ruby 2.6 KeyError#initialize accepts message, receiver, and key as arguments — в Ruby 2.6 метод KeyError#initialize принимает аргументы message, receiver и key.
Подборка от Codeship
Familiarize Yourself with Ruby String Encoding — детальный разбор различных способов кодировки строк в Ruby.
Microservices Messaging: Why REST Isn’t Always the Best Choice — статья посвящена настройке взаимодействия между микросервисами.
Подборка от Drivy Engineering
Security tips for rails apps — полезные советы, как улучшить безопасность приложения на Rails.
Exporting significant SQL reports with ActiveRecord — автор рассказывает, как была решена проблема чрезмерного расходования памяти при экспорте «тяжелых» SQL-отчетов.
Подборка от Imaginary Cloud
Protecting a Rails App with Passenger and Nginx — учимся защищать Rails-приложение паролем, используя Passenger и Nginx.
Node.js and Ruby on Rails: a Comparison — сравнение технологий: Node.js+Express.js или Ruby on Rails.
Подборка от Matt Bessey
Rails + React Server Side Rendering, with Webpacker + Hypernova — в этом туториале автор показывает, как осуществить серверный рендеринг React в приложении на Rails при помощи инструментов Webpacker и Hypernova.
Pre-fetching Data for Apollo GraphQL Client — дополнение к предыдущей статье; автор объясняет, как экспортировать GraphQL запросы из компонентов React, чтобы использовать их в Rails-приложении.
Подборка от Mehdi Farsi
The Enumerable module in Ruby: Part II — вторая статья, посвященная модулю Enumerable в Ruby.
Context Binding in Ruby — что такое context binding и как его использовать в Ruby.
OpenStruct in Ruby — разбираемся, что такое класс OpenStruct в Ruby.
Struct in Ruby — изучаем класс Struct и типы структур в Ruby.
The autoload method in Ruby — как использовать метод autoload в Ruby.
Статьи, посвященные исправлению ошибок в Ruby:
Подборка от Reflektive
From Service Objects to Interactors — инструкция, как реализовать Service Object Pattern при помощи гема Interactor.
Validators for Interactors — читайте, как реализовать валидацию данных в интеракторах.
Подборка от RubyGuides
The Ultimate Guide to HTTP Requests in Ruby — освежаем в памяти, какими способами можно отправлять HTTP запросы в приложении на Rails.
Solving the N-Queens Problem With Ruby — упражнение для ума — решаем задачу об N-ферзях при помощи Ruby.
Fast Lookup & Unique Elements With The Ruby Set Class — что такое sets в Ruby, как их использовать, а также в чем их отличие от arrays.
Подборка от Tom Copeland
Invalid or incomplete POST parameters — автор разбирает ошибку, связанную с неправильными или неполными POST параметрами.
Safer JSON munging — как проще и безопаснее вносить изменения в JSON-файлы.
Подборка от Tomas Valent
Ruby logs and puts not shown in docker container logs — что делать, если логи Ruby не отображаются в логах контейнеров Docker.
Back to the primitive. Testing with simplicity — автор делится простым способом написания тестов в Rails.
How to configure RSpec in Ruby on Rails — новичкам будет полезно узнать, как настроить тест-фреймворк RSpec в Ruby on Rails.
Convert string «true» and string «false» to boolean with Rails — как превратить строки true и false в булевы выражения в Rails.
Factory Bot trait for attaching Active Storage has_attached — как создать Factory Bot объект с файлом, прикрепленным с помощью Active Storage, используя метод trait.
Metaprogramming Ruby cheatcheat — шпаргалка по метапрограммированию в Ruby.
Is Rails still relevant in 2018?— автор делится мнением об актуальности Ruby on Rails в 2018 году.
Google Maps in Rails with Coffee Script — простой гайд, как интегрировать Google Maps в приложение на Rails.
Подборка от Богдана Деньковича
References to changes in Rails 5.2 — подборка ссылок о новшествах в Rails 5.2.
Array#extract! to Active Support 6.0 — автор показывает, как добавить метод Array#extract! В Active Support 6.0.
Туториалы
Upgrade Rails from 5.1 to 5.2 — как обновить приложение с Rails 5.1 до Rails 5.2.
Configuring Circle CI 2.0 for a Real Rails Application — краткий туториал по настройке CircleCI 2.0 для приложения на Rails.
Discover Rails: Active Record — автор показывает, как создать собственный Active Record в Rails.
Build a collaborative playlist over WhatsApp with Rails, Twilio, and Spotify — подробная инструкция, как создать совместный плейлист для WhatsApp при помощи Rails, Twilio и Spotify.
How to use trained Keras and TensorFlow machine learning models within Ruby on Rails — подробная инструкция, как интегрировать построенную при помощи Keras и TensorFlow модель машинного обучения в приложение на Rails.
How I Write Model Tests (Part 1) — автор подробно рассказывает, как писать тесты моделей в RSpec.
Using development dependencies from git in your gem — если вы пишете гемы, то вам полезно будет узнать, как использовать код с GitHub в качестве development dependencies.
Learning How To Deploy Rails — как развернуть Rails-приложение при помощи таких инструментов, как Nginx, Passenger и Capistrano.
Connecting to the Apple Music API from a Ruby (on Rails) application — учимся интегрировать Rails-приложение с Apple Music API.
Writing a Gem with native extensions — автор показывает, как написать гем с нативными расширениями.
Password Generation in Ruby and Rust — сравниваем, как реализовать генерацию паролей в Ruby и Rust.
Релизы
Rails 5.2.1 — вышла стабильная версия 5.2.1 фреймворка Ruby on Rails.
Hanami v1.3.0.beta1 — релиз первой бета-версии v1.3.0.beta1 фреймворка Hanami.
RSpec 3.8 — выкатили новую версию 3.8 популярного тест-фреймворка RSpec.
RubyMine 2018.2.2 (build 182.4129.29) — компания JetBrains представила новую сборку RubyMine 2018.2.2.
Ruby Gems
Paraspec — гем запускает RSpec тесты в несколько потоков, ускоряя тестирование кода.
SidekiqLogAnalyserгенерирует отчет воркеров Sidekiq на основе лог-файла.
События
Ruby Meditation #23 — 15 сентября в Одессе пройдет Ruby Meditation #23; среди спикеров будет Nick Sutterer — создатель фреймворка Trailblazer.
Rails Girls Poznan — 21 и 22 сентября в польском городе Познань пройдет бесплатный двухдневный воркшоп Rails Girls.
Послушать
Ruby Testing Culture with Jason Swett — ведущий и гость подкаста обсуждают культуру тестирования в Ruby.
The Bike Shed
165: The Tables Have Turned — ведущие затрагивают множество тем — от CI/CD до структуры команды разработчиков.
166: Are Services the New Rewrite?— основная тема подкаста — Service Oriented Architecture (SOA).
167: I Feel Like We Should’ve Solved This By Now — ведущий и гость подкаста German Velasco обсуждают удаленную работу, языки программирования Elixir и Erlang, блокчейн и Ethereum и многое другое.
Ruby Rogues
RR 374: Ruby 2.5 Enumerable Predicates Accept Pattern Argument with Prathamesh Sonpatki — главная тема подкаста — Rails 5.
RR 375: How to Contribute to Ruby with Sihui Huang — гость подкаста — Sihui Huang из компании Gusto — рассказывает о своем опыте разработки на Ruby.
RR 376: Ruby Performance with Nate Berkopec — участники дискуссии обсуждают производительность Ruby, а также многие другие интересные темы.
RR 377: Upgrading a Rails application incrementally with Luke Francl — ведущие и гость подкаста Luke Francl из команды GitHub обсуждают множество тем, в том числе обновление приложений на Rails и покупку GitHub компанией Microsoft.
RWpod
- 31 выпуск 06 сезона. Ember 3.3, Ruby 2.6 added options to Exception#full_message, Fusion.js и прочее
- 32 выпуск 06 сезона. Rails 5.2.1, TLS 1.3, Babel 7.0.0-rc.1, Vue CLI 3.0, Kimurai, Foxr, SuperSlide.js, Wexond и прочее
- 33 выпуск 06 сезона. Ruby 2.6 adds write_timeout to Net::HTTP, 7 of the Best Code Playgrounds, TheoremJS и прочее
- 34 выпуск 06 сезона. Go WebAssembly, Best image uploader for Rails, VueToolbox, Size-plugin, Windows 95 running in an Electron и прочее
The Ruby Testing Podcast
Episode 5 — How Brittany Martin Got Started with Programming and Testing — гость подкаста — Brittany Martin — рассказывает о своей карьере в тестировании и разработке на Ruby.
Episode 6 — Continuous Integration/Deployment/Delivery with Marko Anastasov — подкаст посвящен continuous integration/delivery/deployment.
Episode 7 — Testing Anti-Patterns with Kostis Kapelonis — ведущий и гость обсуждают, как не надо тестировать ПО.
Посмотреть
Подборка видео с конференции EuRuKo 2018:
- EuRuKo 2018 Introduction
- Yukihiro Matsumoto — Keynote
- Chris Salzberg — Metaprogramming for generalists
- Joannah Nanjekye — Ruby in containers
- Damir Zekić — Tool belt of a seasoned bug hunter
- Igor Morozov — Ducks and monads: wonders of Ruby types
- Brad Urani — Rails anti-patterns: how not to design your database
- Coraline Ada Ehmke — The broken promise of Open Source
- Louisa Barrett — Ruby not red: color theory for the rest of us
- Day 2 Welcome
- Nadia Odunayo — The case of the missing method — a Ruby mystery story
- Pitch the next EuRuKo’s location
- Ana María Martínez Gómez — Let’s refactor some Ruby code
- Pan Thomakos — Debugging adventures in Rack-land
- Lightning talks
- Kerstin Puschke — Scaling a monolith isn’t scaling microservices
- Amr Abdelwahab — An empathy exercise: contextualising the question of privilege
Выпуски GoRails в августе, в которых ведущий показывает, как реализовать реферальную программу с нуля и с помощью Stripe, как подписывать Stripe webhooks, а также как добавить автообнаружение часового пояса в приложении на Rails:
- Payments with Stripe: Affiliate & Referrals Programs with Stripe & Rewardful
- User Referral Program From Scratch
- Stripe Signed Webhooks
- Auto-detect User Time Zones in Rails
Подборка платных скринкастов от Drifting Ruby за август:
- #145 Improving Partial Loading Performance
- #146 Rails API Documentation
- #147 State Machines with AASM
- #148 ActiveRecord Callbacks
Выпуски платных скринкастов от Ruby Tapas в августе:
- Episode #539 Better Code with Mutant
- Episode #540 Ruby Spelunking
- Episode #541 Abstraction and Performance — Part 1
- Episode #542 Abstraction and Performance — Part 2
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #20