Ruby/Rails дайджест #24: релиз Ruby 2.6.0-preview3, обновление JRuby до 9.2.4.1, а также выход 5.2.2.rc1 фреймворка Ruby on Rails
Всем привет!
В новом дайджесте тонна хороших новостей для сообщества 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