Всем привет!
В новом дайджесте тонна хороших новостей для сообщества Ruby. Начнем с того, что работа над Ruby 2.6 на завершающей стадии — в начале ноября была представлена третья preview-версия Ruby 2.6, за которой последует уже предрелизная версия. Также вышел ряд других обновлений, в том числе Rails 5.2.2.rc1, Passenger 5.3.7 и Jekyll 3.8.5. Обратите внимание на подборку статей о Ruby 2.6 — там не только говорится о новых функциях, но также есть бенчмарки работы с JIT-компилятором и без него.
Почитать
Scaling the Monolith — чек-лист по масштабированию монолитного приложения.
Tips for Writing Fast Rails: Part 2 — советы автора, как увеличить производительность приложений на Rails (первая часть здесь).
Bundler is Built Into Ruby 2.6.0preview3 — теперь менеджер пакетов Bundler встроен в Ruby 2.6.0-preview3.
Deploying feature branches to have a review app — как и зачем создавать staging-окружение для каждой ветки feature при разработке ПО.
Rails Path Helpers and the Mystery of the Missing Route Key — автор на примере показывает, как решить проблему, которая возникает при отсутствии route key в приложениях на Rails.
Why we use Ruby on Rails to build GitLab — CEO компании GitLab рассказывает, почему для их проекта был выбран Ruby on Rails.
Do You Test Ruby Code for Thread Safety?— автор показывает, как протестировать код на Ruby на потоковую безопасность (thread safety) при помощи гема threads.
Fibers Are the Right Solution — как использовать возможности многопоточности в Руби для создания веб-сервера.
Airflow Architecture at Drivy — как и зачем компания Drivy использует Airflow-архитектуру.
An Update on Bundler 2.0 — узнайте, что нового в Bundler 2.0.
Git aliases I can’t live without — автор рассказывает, какие псевдонимы (aliases) он использует при работе с Git и почему.
Finding Ruby Performance Hotspots via Allocation Stats — как увеличить производительность приложений на Ruby при помощи frozen strings.
No more hassle with Rails secret management — освежаем в памяти, как работать с Rails Credentials в Ruby on Rails 5.2.
Ruby’s (not so) constants — автор рассказывает про особенности использования констант в Ruby.
Ruby `allocate` method — как работает метод allocate в Ruby.
Hash rockets are good actually — автор говорит о преимуществах записи хэшей через hash rocket.
The Benefits of Materialized Views (and how to use them in your Ruby on Rails project) — когда использовать materialized views в приложениях на Rails.
Ruby Deserialization — что нужно учитывать при проведении десериализации в Ruby.
Image Placeholder for your development environment — инструкция, как использовать гем ImagePlaceholderв development-окружении при разработке приложений на Ruby.
Подборка статей о Ruby 2.6:
- 9 New Features in Ruby 2.6 — обзор девяти новых функций Ruby 2.6.
- What Is MJIT in Ruby 2.6 & How Does It Work?— что такое MJIT-компилятор в Ruby 2.6 и как он работает.
- How fast is Ruby 2.5, 2.6 and 2.6 —jit in generating Prawn PDFs — автор измерил производительность Ruby 2.6 с JIT-компилятором при генерации PDF-файлов.
- What’s new in Ruby 2.6?— краткий обзор новых фич в Ruby 2.6.
- Exploring Ruby 2.6: Enumerator, Hash, and Enumerable Changes — какие изменения произойдут в модуле Enumerable в Ruby 2.6.
Подборка от AppSignal
Testing Asynchronous Threads in Ruby — учимся тестировать асинхронные потоки в Ruby.
Fibers and Enumerators in Ruby: Turning Blocks Inside Out — детальный разбор классов Enumerable и Fiber в Ruby.
Подборка от Jason Swett
Avoiding Network Calls In Rails Tests Without Using Mocks, Stubs or VCR — простой пример, как избежать сетевых запросов в тестах с помощью dependency injection.
Common Legacy Project Challenges and How to Address Them — какие трудности могут возникнуть при работе на legacy-проектах и как их решить.
When I Use Controller/Request Specs in Rails and When I Don’t — автор рассказывает, когда следует использовать controller specs, а когда request specs.
Rails Scaffolding and TDD Are Incompatible — почему scaffolding (генерация шаблонного кода в Rails) несовместим с test-driven development.
Подборка от Phusion
Stopping slow client DoS attacks with Puma on Passenger 6 — как предотвратить slow client DOS-атаку, используя Puma, Nginx и Passenger.
Your language’ built-in server was never meant for production use — какой веб-сервер выбрать в приложениях на Ruby.
Подборка от reinteractive
When is the right time to do a code audit?— автор делится мнением, когда следует проводить code audit.
Using Ruby and Tesseract to Recognise Text in an Image — учимся распознавать текст в изображениях в приложениях на Ruby при помощи гема Tesseract.
Подборка от RubyGuides
Ruby Templating Engines: ERB, HAML & Slim — обзор основных механизмов обработки шаблонов в Ruby.
How to Use attr_accessor, attr_writer & attr_reader — автор на примерах показывает, как использовать методы attr_accessor, attr_writer и attr_reader.
Ruby Coding Challenges & How to Solve Them — сложности написания кода на Ruby и как их преодолевать.
How to Use The Ruby Alias Keyword — освежаем в памяти, как использовать ключевое слово alias и метод alias_method в Ruby.
How To Use Heredoc in Ruby — освежаем в памяти, как использовать heredoc в Ruby.
Dup vs Clone in Ruby: Understanding The Differences — разбираемся, в чем разница между методами dup и clone в Ruby.
Подборка от Victor Moroz
Две части туториала о создании Ruby гема с расширением, написанным на Rust:
Туториалы
Migrating from Paperclip to Active Storage — в этом туториале автор показывает, как провести миграцию с Paperclip на Active Storage.
Clean RSpec configuration directory structure for Ruby on Rails gems needed in testing — инструкция, как выбрать структуру конфигурационного каталога (configuration directory) RSpec.
Using random number generators to solve problems — автор на примере показывает, как использовать генератор случайных чисел в Ruby.
A Beginner’s Guide to Service Objects for Ruby on Rails — гайд о служебных объектах (service objects) в Ruby on Rails для новичков.
Ruby memory, ActiveRecord and Draper — автор делится опытом оптимизации памяти в приложении на Rails при обработке CSV-файлов.
Writing GraphQL queries in native Ruby = Love — автор показывает, как использовать GraphQL в приложениях на Rails.
Building SQL expressions with Sequel — как создавать SQL-выражения при помощи инструмента Sequel.
Серия туториалов, как создать приложение на Ruby on Rails, в котором за логику представления будет отвечать React:
- Rails with React — One Repo — Part 1
- Rails with React — One Repo — Part 2
- Rails with React — One Repo — Part 3
Релизы
Ruby 2.6.0-preview3 — вышла третья предрелизная версия Ruby 2.6.0 с JIT-компилятором.
Rails 5.2.2.rc1 — команда разработчиков Ruby on Rails представила предрелизную версию Rails 5.2.2.
JRuby 9.2.4.1 — релиз версии 9.2.4.1 интерпретатора языка Ruby.
Jekyll 3.8.5 — представлена новая версия генератора статичных сайтов Jekyll.
Passenger 5.3.7 — вышла версия 5.3.7 популярного сервера приложений Passenger.
RubyMine 2018.3 (build 183.4284.145) — компания JetBrains обновила IDE RubyMine
Ruby Gems
GraphQL::SmartSelect — плагин для библиотеки graphql-ruby
Google Recaptcha v3 — имплементация Google Recaptcha v3 для Rails.
WebpackerCli — эта библиотека позволяет использовать Webpackerв других веб-фреймворках.
FiniteMachine — finite state machine с простым и понятным синтаксисом.
Standard — Ruby Style Guide с инструментами контроля качества и отладки кода.
Iguvium — эта библиотека извлекает таблицы из PDF-документов.
Typerb — гем для проверки соответствия кода для Ruby 2.6.
ImagePlaceholder — библиотека для генерации плейсхолдеров в development-окружении.
События
Ruby Meditation #25 — 8 декабря в Киеве пройдет Ruby Meditation #25. Спикеры расскажут о многопоточном выполнении на production, важности business development и многих других интересных темах.
Послушать
The Bike Shed
- 177: Tricking Computers Into Doing Things — ведущий и гость подкаста обсуждают множество тем, в том числе производительность приложений на Rails.
- 178: Friday is For Spikes — основная тема дискуссии — платформа GitHub.
Ruby Rogues
- RR 387: Ruby Performance Profiling with Dan Mayer — участники дискуссии обсуждают измерение производительности приложений на Rails.
- RR 388: RuboCop (and Emacs I guess :-)) with Bozhidar Batsov — подкаст посвящен популярному гему RuboCop.
- RR 389: Developer Environment with the Panelists — ведущие обсуждают, какие инструменты они используют для создания среды разработки.
- RR 390: Creating a Heroku-Like Deployment Solution with Docker with Pedro Cavalheiro — участники обсуждают создание платформы для развертывания ПО по образцу Heroku.
RWpod
- 44 выпуск 06 сезона. Bundler 2.0, reCAPTCHA v3, the Evolution of Async JavaScript, Plotly.js, Ervy и прочее
- 45 выпуск 06 сезона. Ruby 2.6.0-preview3, GraphQL Foundation, Five years of PostCSS, Capybara::Chrome, Agoo, Typerb, JSBI и прочее
- 46 выпуск 06 сезона. What’s new in Ruby 2.6?, The State of JavaScript 2018, WebpackerCli, TensorSpace, Slate и прочее
- 47 выпуск 06 сезона. AnyCable 0.6.0, Dart for JavaScript Programmers, Iguvium, Modulation, CMS.js и прочее
Ruby on Rails Podcast
- 249: Upgrading GitHub from Rails 3.2 to 5.2 with Eileen M. Uchitelle — гость подкаста — Eileen M. Uchitelle — рассказывает об обновлении GitHub с Rails 3.2 до версии 5.2.
- 250: Migrating Twitter from Rails & Powering Up with Linkerd with William Morgan — в гостях у ведущей — William Morgan из команды Linkerd.
- 251: An Honest Take on GraphQL with Ankita Gupta — подкаст посвящен интеграции GraphQL в приложение на Rails.
The Ruby Testing Podcast
- 017 — Michael Hartl, Author of the Ruby on Rails Tutorial — гость подкаста — Michael Hartl — автор Ruby on Rails Tutorial.
- 018 — Ben Orenstein, Co-Founder of Tuple — участники дискуссии говорят, как практика парного программирования соотносится с тестированием.
- Chris Kottom, Author of The Minitest Cookbook — послушайте о разнице между RSpec и Minitest.
Remote Ruby
- Embracing «The Rails Way», The GoRails Redesign, Utility CSS, and Stimuluuuuus — основная тема подкаста — как создать Rails-приложение согласно книге ‘The Rails Way’.
- Ruby 3, Ruby 4!?, Matz’s Long Term Plans, More StimulusJS, and a New Stripe Course — ведущие подкаста обсуждают речь Yukihiro ’Matz’ Matsumoto на конференции RubyConf 2018, JavaScript-фреймворк Stimulus.jsи другие темы.
- The Thanksgiving Travel Episode — в этом выпуске ведущие обсуждают обновление API Stripe и развертывание сервера для Rails-приложения при помощи Hatchbox.
Посмотреть
4 Ways to Scale on Heroku — четыре способа масштабировать приложение на Heroku.
Выпуски GoRails в ноябре, в которых автор показывает, как получить доступ к параметрам в адресной строке из view, не прибегая к params.permit, добавить аватары пользователей в Rails-приложения при помощи ActiveStorage и как реализовать встраиваемые JavaScript-виджеты в приложениях на Rails:
- Link To Current Page With Params
- Embeddable Javascript Comments Widget Models — Part 1
- User Avatars with ActiveStorage
- Using Vuex with a Rails Backend
Ноябрьская подборка платных скринкастов от Drifting Ruby:
- #158 Grab Bag of Ruby and Ruby on Rails Tricks
- #159 Activity Feed with Public Activity
- #160 Development Decisions and Architecture
- #161 Refactoring Models
Выпуски платных скринкастов от Ruby Tapas за ноябрь:
← Предыдущий выпуск: Ruby дайджест #23