Всем привет!
Начнем с того, что в сентябре вышла версия 2.5 популярной open-source платформы для создания социальных сетей Mastodon. Компания Phusion собирается прекратить поддержку Ruby 1.8 в веб-сервере Passenger. Не пропустите статьи о создании Ruby-приложений при помощи фреймворка Sinatra. Также обратите внимание, что в конце августа инструмент мониторинга приложений Honeybadger был обновлен до версии 4.0 — почитайте, какие функции добавились.
Почитать
The Problems With Validating ActiveRecord Models and Why State Validation Is a Bad Idea — читайте, почему лучше избегать валидации в моделях ActiveRecord.
Open-sourcing checker jobs — почему компания Drivy решила сделать исходный код гема CheckerJobsобщедоступным.
How I got my first pull request merged on Rails-core — на примере pull request в ядро Ruby on Rails, автор показывает, как участвовать в разработке OSS.
Understanding Transducers in Ruby — разбираемся, что такое transducers в Ruby.
A few lesser-known but useful Ruby (on Rails) methods: Array — автор описывает несколько полезных методов при работе с Array в Ruby on Rails.
Procs vs Callables in Ruby — разбираемся, в чем разница между proc и callable в Ruby.
Monad laws in Ruby — статья для тех, кто использует монады, но не до конца понимает их суть.
101: Advanced OOP Structure in Rails Practice — автор на примерах показывает, как оптимизировать структуру приложения на Rails.
What makes a good changelog?— советы, как вести журнал изменений правильно.
RubyMine Refactorings: Overview & Improvements — узнайте, как инструменты для рефакторинга доступны в IDE RubyMine.
Building My First Sinatra-based Ruby App: Thoughts and Wrap-up — автор делится опытом создания приложения на фреймворке Sinatra.
Polyglot content in a rails app — как перевести контент в Rails-приложении на разные языки.
Dropping RHEL6, Debian 7 and Ruby 1.8 support?— компания Phusion собирается прекратить поддержку Ruby 1.8 в веб-сервере Passenger.
Introducing Priora: An Object Prioritization Utility Gem for Ruby — автор представляет гем Prioraдля приоритизации объектов.
How to Do Web Scraping with Ruby — что такое web scraping и как его реализовать в Ruby.
Securing your Ruby and Rails Codebase — какие инструменты помогают обеспечить безопасность приложений на Ruby.
Updated Github Integration — CI/CD платформа Codeship обновила интеграцию с GitHub; узнайте, что изменилось.
Why Reversible Migrations Are Important and How to Write Them — узнайте, что такое обратимые миграции и как их реализовать в Ruby on Rails.
How we optimise performance for our clients’ Ruby on Rails applications — автор делится опытом оптимизации приложений на Ruby on Rails.
Отчеты об обновлениях фреймворка Ruby on Rails:
- Multi env credentials support, Action Cable channel unit testing and more
- Performance improvements, configuration options, and more
Подборка от Andy Croll
Don’t Loop & Do Work in Jobs — автор показывает, как оптимизировать выполнение фоновых задач в приложении.
Careful with present? when using ActiveRecord scopes — почему при работе с коллекциями ActiveRecord вместо метода #present? лучше использовать #any? или #exists?.
Using pluck can save a bunch of memory — как снизить использование памяти при помощи метода #pluck.
Подборка от AppSignal
Closures in Ruby: Blocks, Procs and Lambdas — как работают функции-замыкания в Ruby: blocks, procs и lambdas.
Differences Between #nil?, #empty?, #blank?, and #present?— не забываем, в чем разница между методами #nil?, #empty?, #blank?, и #present? в Ruby on Rails.
#to_s or #to_str? Explicitly casting vs. implicitly coercing types in Ruby — в чем отличие между явным и неявным преобразованием типов в Ruby.
ActiveRecord vs. Ecto Part One — первая часть цикла, в котором автор сравнивает ActiveRecord в Ruby и Ecto в Elixir.
Подборка от Arkency
Command sourcing — why I am considering it — что такое command sourcing и в каких случаях стоит его использовать.
Event scout rule — автор рассказывает, зачем добавлять логику publishing event в реализуемые функции.
Big events vs Small events — from the perspective of refactoring — какие события лучше использовать с точки зрения рефакторинга.
3 ways to make your ruby object thread-safe — как подготовить объекты в Ruby к использованию в многопоточной среде.
Подборка от BigBinary
Uploading files directly to S3 using Pre-signed POST request — автор показывает, как реализовать загрузку файлов из backend API на Rails в хранилище Amazon S3 при помощи pre-signed POST запроса.
Using parametrized containers for deploying Rails micro services on Kubernetes — учимся использовать параметризованные контейнеры при развертывании микросервисов на Rails при помощи Kubernetes.
Подборка от Leszek Zalewski
How to: Road to fast and stable test suite — как ускорить тестирование приложения при помощи гема Knapsack.
How to: Get most of the database cleaner — подробная инструкция, как правильно настроить гем Database Cleaner.
Подборка от Mehdi Farsi
Symbol in Ruby — что представляет из себя символ в Ruby.
The redo Keyword in Ruby — как использовать redo в циклах, перечислениях и блоках.
refine and using Methods in Ruby: Part I — что такое monkey patching в Ruby и как использовать методы refine и using.
The return Keyword in Ruby — разбираемся с ключевым словом return в Ruby.
Alias in Ruby — детальный разбор alias в Ruby.
Статьи о шаблоне проектирования Singleton и его реализации в Ruby:
Подборка от Naturaily
Value based pagination in Ruby on Rails — что такое value-based pagination и как реализовать ее в приложении на Rails.
How to Create Paid Order Using Shopify API — если вы работаете над онлайн-магазином, эта статья научит вас создавать paid order при помощи Shopify API.
Подборка от Ombu Labs
Refactoring with Design Patterns — The Template Pattern — в чем заключается шаблон проектирования Template Method и как он реализуется в Ruby.
Step up the security of your Rails app | Part 1 — узнайте, как обезопасить приложение на Rails от таких угроз, как command injection и SQL injection.
Подборка от reinteractive
PostgreSQL vs MySQL — почему для Ruby on Rails приложений лучше использовать базу данных PostgreSQL.
Using Ruby Closures to simulate classes — учимся использовать замыкания для создания объектов без классов.
Подборка от RubyGuides
Rack Explained For Ruby Developers — что такое Rack и зачем он используется в приложениях на Ruby.
How to Use The Ruby Super Keyword — как использовать ключевое слово super в Ruby.
How to Use Ruby Conversion Methods — подробный туториал о методах преобразования в Ruby.
The Ultimate Guide to Ruby Gems, Gemfiles & Bundler — полезная статья о гемах — как создать гем, что такое Bundler и Gemfile и как ими пользоваться.
Туториалы
Ruby goes Serverless! — Apache OpenWhisk adds native support for Ruby — serverless-платформа Apache OpenWhisk теперь поддерживает Ruby — учимся ее настраивать.
Migrating PostgreSQL standalone instance to Aurora (Amazon RDS) — подробная инструкция, как произвести миграцию инстанса PostgreSQL на Amazon Aurora.
Authentication from Scratch with Rails 5.2 — как настроить аутентификацию в приложении на Ruby on Rails 5.2.
Local SSL for Rails 5 development and tests — учимся настраивать локальный SSL-сертификат для разработки и тестирования приложения на Rail 5.
Optimize Dokku Deployment Speed for Ruby on Rails with Dockerfile — как оптимизировать скорость развертывания Rails-приложения на платформе Dokku.
Using Rails Session Cookies for API Authentication — детальная инструкция, как настроить аутентификацию с помощью session cookies в Rails API.
Testing CSV Files in Rails (on the fly) — учимся тестировать CSV-файлы в приложении на Rails.
Simple Authentication with Rails and OmniAuth — пошаговая инструкция, как реализовать аутентификацию пользователей с помощью гема OmniAuthв приложении на Rails.
Making a Ruby executable with ruby-packer — этот краткий гайд научит вас создавать исполняемые модули при помощи библиотеки Ruby Packer.
Creating a Minimal Sinatra App For Hosting Test Files on Heroku — читайте, как построить небольшое Ruby-приложение для хостинга тест-файлов на платформе Heroku с помощью фреймворка Sinatra.
Релизы
RubyMine 2018.2.3 — компания JetBrains выпустила версию 2018.2.3 (сборка 182.4323.73) популярной IDE RubyMine.
Mastodon 2.5 — вышла версия 2.5 популярной open-source платформы для создания социальных сетей Mastodon.
Ruby Gems
Honeybadger 4.0 — узнайте, что нового в версии 4.0.0 популярного гема Honeybadger.
Name of Person — этот гем поможет вам быстро привести имена людей к нужному формату.
Statics — данная библиотека содержит базовые классы и модули для статических моделей.
Benchmark::Trend — гем поможет вам измерить скорость выполнения кода на Ruby.
Remote Bootstrap Modal — эта библиотека добавляет модальное окно Bootstrap в приложение на Rails.
Конференции
RESCON —
London Ruby Unconference 2018 — 6 октября в Лондоне пройдет London Ruby Unconference, где темы для дискуссии предлагают сами участники.
RubyRussia — 6 октября в Москве проходит конференция RubyRussia, а 7 октября участников ждут интересные воркшопы.
Послушать
Rad Dad — David Heinemeier Hansson — в гостях у Rad Dad (Kirill Zubovsky) создатель фреймворка Ruby on Rails David Heinemeier Hansson.
The Bike Shed
169: Fear Driven Development — основная тема подкаста — тестирование и рефакторинг приложений на Ruby.
170: Less Charted Territory — ведущий и гость подкаста Paul Smith обсуждают язык программирования Crystal, синтаксис которого во многом основан на Ruby.
171: What If We Just Used a Form?— в этом выпуске Matt Sumner рассказывает о своем опыте работы с блокчейн (в частности, с платформой Ethereum).
Ruby Rogues
RR 378: Ruby performance: MJIT with John Hawthorn — участники дискуссии обсуждают MJIT-компилятор для Ruby: что это такое, как он работает с Rails, а также насколько эффективно MJIT-компилятор увеличивает скорость работы приложений.
RR 379: «Caching in Rails» with Jeff Kreeftmeijer — в этом выпуске ведущие и гость подкаста обсуждают кэширование в Rails.
RR 380: «Deploying Ruby on Rails application using HAProxy Ingress with unicorn/puma and websockets» with Rahul Mahale — гость подкаста Rahul Mahale из компании BigBinary делится опытом работы с Kubernetes; в частности, Rahul рассказывает, как развернуть Rails-приложение при помощи HAProxy Ingress, используя Unicorn/Puma и websockets.
RR 381: «Ruby GUI Development» with Saverio Miroddi — главная тема выпуска — разработка приложений с графическим интерфейсом на Ruby.
RWpod
- 35 выпуск 06 сезона. Babel 7 Released, Rails... Still?!?!, GraphQL pagination in Rails, Aijs.rocks, Reworm, EuRuKo и прочее
- 36 выпуск 06 сезона. Rack Explained For Ruby Developers, JavaScript idiosyncrasies, Vuidget, Hygen, PostGraphile, JSLinux и прочее
- 37 выпуск 06 сезона. Safari DoS, Yarn Plug’n’Play, Dante Stories, Ramda Ruby, Vuesax, Low.js, Sqorn и прочее
- 38 выпуск 06 сезона. Flutter Release Preview 2, Electron 3.0.0, Migrating Passenger from C++ to Go?, iOS 12 Array reverse bug, RxDB и прочее
The Ruby Testing Podcast
Testing a Ruby Gem with Josh Wood of Honeybadger — гость подкаста Josh Woodрассказывает о том, как создавался и тестировался гем Honeybadgerдля Ruby.
How Jason Charnes Got Started with Testing — организатор конференции Southeast Ruby Conf Jason Charnesделится своим опытом тестирования приложений на Ruby.
Selenium and QA with Zach Attas — ведущий и гость подкаста обсуждают тестирование приложений на Ruby и инструменты Selenium и Capybara.
Refactoring Legacy Projects and Test Suites with John Cech — гость подкаста делится опытом рефакторинга legacy-приложений (а также тестов) на Rails.
Remote Ruby
Joined by «Schneems» (Richard Schneeman) — в гостях у ведущих Richard Schneeman — создатель CodeTriage и активный contributor Ruby on Rails.
The Yak Shave
1: A Brave New World — в дебютном выпуске нового подкаста ведущие обсуждают различные темы, в том числе read-your-writes consistency в AWS S3 и работу long-running jobs в Sidekiq.
2: This is Fine — выпуск посвящен incident management: как происходят инциденты и почему важно их документировать.
3: Almost 0% Chance it’s a Bug — в этом подкасте один из ведущих рассказывает о самом сложном случае debugging в своей карьере.
Посмотреть
Подборка видео от Codemy:
- Rails: Upgrading a Legacy Rails App Part 1 — в этом видео ведущий показывает, как обновить legacy-приложение на Rails.
- Rails: Active Storage Basics (File Uploading) — учимся настраивать Active Storage для загрузки файлов в Rails.
- Codemy V2 and is Rails still Relevant?— ведущий показывает новый сайт Codemy, а также рассказывает, насколько востребован Ruby on Rails в настоящее время.
Выпуски GoRails за сентябрь, в которых ведущий подробно рассказывает, как реализовать вложенные комментарии в приложении на Ruby on Rails, а также показывает, как ускорить pagination при помощи гема Pagy:
- Fast Pagination with Pagy
- Nested Comment Threads in Rails — Part 1
- Nested Comment Threads in Rails — Part 2
- Nested Comment Threads in Rails — Part 3
Сентябрьская подборка платных скринкастов от Drifting Ruby:
- #149 Rails Presenters
- #150 Database, Model and Scopes
- #151 Safely Running Shell Commands
- #152 Deeper Dive into StimulusJS
- #153 Bundler and Binstubs
Выпуски платных скринкастов от Ruby Tapas в сентябре:
- Episode #544 Risk-Oriented Testing
- Episode #545 Memory Management in C Extensions — Part 1
- Episode #546 Memory Management in C Extensions — Part 2
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #21