Всем привет! Март порадовал Ruby-сообщество множеством интересных событий.
Прежде всего, вышли официальные версии Rails 5.0.7 и 5.1.6, а также бета-версия фреймворка Hanami — v1.2.0.beta2. Во-вторых, появились первые бенчмарки превью-версии Ruby 2.6 с JIT. Также обратите внимание на статьи Daniel P. Clark о Vue.js в качестве фронтенд-фреймворка для приложений на Rails.
Почитать
Ruby 2.6 preview 1: Timing JIT — в конце февраля вышла превью-версия Ruby 2.6, а уже в марте появились первые бенчмарки. Насколько эффективен JIT-компилятор? Все ответы — в статье.
Towards The Ruby 3×3 Performance Goal — узнайте, как сообщество Ruby работает над проектом CRuby и сможет ли версия 3 в три раза превосходить по производительности версию 2.
If the OS landscape was disrupted, would Ruby have survived until today?! — Keynote by Mr. Yukihiro «Matz» Matsumoto at Ruby25 — не пропустите главное из речи создателя языка Ruby Юкихиро Мацумото (Matz) на конференции Ruby25.
A New Ruby Application Server: NGINX Unit — обзорная статья о том, насколько сервер приложений Nginx подходит для приложений на Ruby.
TIOBE Index for March 2018 — Ruby вытеснил Delphi в первой десятки рейтинга популярности языков программирования по версии TIOBE.
Passenger 5.2.2: passenger_base_uri fixed, new Phusion product spoiler — если ваше приложение использует сервер Passenger, то самое время сделать апгрейд до версии 5.2.2. В статье говорится, как это сделать.
RabbitMQ is more than a Sidekiq replacement — автор подробно рассказывает о преимуществах RabbitMQ в сравнении с Sidekiq при работе с фоновыми задачами.
Practical Differences between Working in Ruby and iOS — на основе собственного опыта автор сравнивает разработку на Ruby и Swift; статья будет полезна full-stack программистам, а также тем Ruby-программистам, которые собираются попробовать себя в мобильной разработке под iOS.
My thoughts on Hanami — Райан Бигг делится своим мнением о Ruby-фреймворке Hanami.
Implementing a basic debug mode for your Ruby CLI — автор подробно описывает, как настроить сообщения об ошибках с помощью имплементации отладочного режима для Ruby CLI.
How I Built Timeasure: Part 1 — Motivation & Method Wrapping — первая статья из цикла, в котором автор детально описывает процесс создания гема Timeasure.
Solving CAPTCHAs with TensorFlow and Ruby — узнайте, как научить Ruby-приложение автоматически преодолевать капчи с помощью инструмента TensorFlow.
Using `yield_self` for composable ActiveRecord relations — автор рассказывает о том, как метод yield_self можно использовать в работе с Active Record.
Why proxying Bugsnag (or similar service) might be a good idea?— на примере сервиса проверки качества кода Bugsnag автор показывает, как проксировать сообщения об ошибках через back end.
An overview of Desktop Ruby GUI development in 2018 — краткий обзор инструментов для создания desktop-приложений на Ruby.
Setting up a Rails app for CodeBuild, CodeDeploy, and CodePipeline on AWS — читайте, как настроить continuous integration/delivery/deployment Rails-приложения с помощью сервисов AWS.
The correct emails configuration in Rails — простые советы о том, как правильно настроить отправку имейлов в Rails-приложениях.
Ruby on Rails: 5 Checks to Make Before Launching Your App — чек-лист по пунктам, на которые стоит обратить внимание перед запуском вашего Ruby on Rails приложения.
Use Ruby Objects to Keep Your Rake Tasks Clean — автор делится опытом оптимизации Rake-задачи с помощью объектов в Ruby.
Why Service Objects are an Anti-Pattern — многие Ruby-разработчики используют service objects в Rails-приложениях, однако автор статьи считает этот подход неверным. Узнайте почему!
Introducing Blueprinter — Blueprinter — новый инструмент для форматирования и сериализации API.
Is Ruby on Rails a Good Framework for Building a SaaS product?— в статье подробно разобран вопрос, насколько Ruby on Rails подходит для создания SaaS-приложений.
Qyu: A distributed task execution system for complex workflows — автор рассказывает о новом инструменте для распределения задач для Ruby.
Better passwords in Ruby applications with the Pwned Passwords API — если вы хотите обеспечить максимальный уровень защиты аккаунтов пользователей, используйте Pwned Passwords API.
From Rails to Clojure, then to Java, then back to Rails — почитайте мнение автора о нескольких языках программирования, а также плюсы и минусы каждого из них.
Rails test coverage: Measuring what matters with SimpleCov — статья рассказывает, почему важно анализировать степень покрытия кода тестами при помощи библиотеки SimpleCov.
Why should you learn multiple programming languages?— даже если вы первоклассный специалист по Ruby, не стоит пренебрегать другими языками программирования. Почему? Автор делится своим мнением.
Monitoring Sidekiq Using AWS Lambda and Cloudwatch — функционала Sidekiq может быть недостаточно для анализа обработки фоновых задач; данная статья расскажет, как это исправить с помощью AWS Lambda.
Ruby Benchmarking — если вы строите крупное приложение на Ruby, то наверняка вы хотите измерить его производительность. Статья ознакомит вас с тем, как качественно протестировать приложение.
Подборка от Mensfeld
- Kafka on Rails: Using Kafka with Ruby on Rails — Part 2 — Getting started with Ruby and Kafka — во второй статье об Apache Kafka автор рассказывает, как запустить Kafka в Docker контейнере и настроить message publishing из Rails приложения с помощью WaterDrop.
- Karafka framework 1.2.0 Release Notes (Ruby + Kafka) — ознакомьтесь с подробным описанием новой версии фреймворка Karafka для Apache Kafka.
Подборка от Arkency
- Rails Event Store — better APIs coming — статья рассказывает о новых APIs в Rails Event Store v0.26.
- Using singleton objects as default arguments in Ruby — автор показывает, как использовать синглтон-объекты в качестве параметров по умолчанию.
- Ruby Event Store — use without Rails — узнайте, какие улучшения ожидают вас в Ruby Event Store v0.27.
Подборка от Engine Yard
- Memcached Security aka Don’t Attack GitHub — недавно хакеры использовали Memcached-сервер для атаки GitHub. В статье о том, как защитить Rails-приложение от подобных атак.
- Ajax on Rails with Unobtrusive JavaScript — автор подробно рассказывает, как использовать Ajax в Rails-приложениях.
- Pros and Cons of DevOps as a Service — узнайте о плюсах и минусах услуги DevOps as a Service.
- Using Rails and Vue JS, Part 1 — первая статья из цикла об использовании JavaScript-фреймворка Vue.js при создании Rails-приложения.
- Rails Encrypted Credentials Use AES
128-bit Key — статья отвечает на вопрос, безопасно ли128-битное шифрование в функции Credentials в Ruby 5.2.
Подборка от BigBinary
GPG decryption without pin entry pop up using GPGME — краткое руководство о том, как раскодировать файлы, зашифрованные с помощью инструмента GnuPG (он же GPG).
Также продолжение серии статей о Ruby 2.5:
- Ruby 2.5 prints backtrace and error message in reverse order — автор показывает, как Ruby 2.5 облегчает отладку исходного кода благодаря обратной структуре сообщения об ошибках.
- Ruby 2.5 adds Exception#full_message method — в Ruby 2.5 добавлен новый метод, позволяющий отображать обработанные исключения так же, как и необработанные.
Подборка от AppSignal
- Fragment caching in Rails — узнайте, как ускорить работу приложений с помощью кэширования фрагментов кода.
- Exceptions in Ruby — автор на примерах рассказывает о типах исключений в Ruby.
Подборка от Paweł Dąbrowski
- Build your own RSpec — introduction to DSL and metaprogramming — автор показывает, как с помощью DSL и метапрограммирования можно создать аналог RSpec, популярного фреймворка для тестирования Rails-приложений.
- Ruby on Rails — your own slow query log, no sql configuration required — статья показывает, как документировать медленные запросы в Ruby on Rails; это облегчает рефакторинг кода и помогает разработчикам ускорить работу приложений.
- 4 ways to refactor and speed up RSpec tests — узнайте о 4 способах провести рефакторинг и ускорить тесты, написанные при помощи RSpec.
- 3 things that slow down and make your RSpec tests worse — советы по ускорению тестов на RSpec.
- 4 cool less known Rails features — part 1: ActiveJob, ActiveModel, command line — первая часть цикла статей, в котором автор делится опытом и рассказывает о некоторых малоизвестных возможностях Ruby on Rails.
Подборка от Nopio
- How to Setup Rails Application on Heroku — Redis, Sidekiq, Action Cable and Cron Configuration — статья описывает процесс установки Rails-приложения на хостинг Heroku, подробно останавливаясь на настройке отдельных элементов инфраструктуры.
- Blockchain App with Ruby — блокчейн — одна из самых горячих тем в мире технологий; эта статья расскажет вам, как создать децентрализованное приложение на Ruby.
Подборка от End Point
- Multi-Tenant Architecture — автор рассказывает о том, как реализовать multi-tenant архитектуру в Rails-приложениях с помощью гема Apartment.
- Rails Active Storage — узнайте, как с помощью Active Storage в Rails 5.2 можно загружать файлы в облачные хранилища (AWS, Google Cloud и Microsoft Azure).
Туториалы
Capistrano deploy to ubuntu with systemd, nginx/puma and rbenv — туториал по развертыванию приложения и (или) среды разработки на одном сервере при помощи Capistrano.
Bare Bones Rails Action Cable Tutorial — туториал по созданию чат-сервера при помощи Action Cable.
Upgrade Rails from 4.2 to 5.0 — статья обращает внимание на важнейшие аспекты при обновлении Rails-приложения с версии 4.2 до 5.0.
How to Track Down and Fix Slow Active Record SQL Queries in Rails — недовольны производительностью своего Rails-приложения? Не спешите вносить изменения в стак, возможно, проблема в базе данных, а этот туториал научит вас оптимизировать работу Active Record SQL запросов.
How I’ve Built a Profitable Slack Bot as a Side Project in Rails — чатботы становятся все более популярны; почитайте, как создать Slack-бота при помощи Ruby on Rails.
The Proxy pattern revisited — узнайте, как использовать Proxy дизайн-паттерн при помощи метода Module#prepend.
How to run Capybara feature specs with Selenium and headless Chrome — CircleCI 2.0 case study — туториал учит, как избежать проблем с популярными инструментами Capybara и Selenium при переходе с CircleCI 1.0 на CircleCI 2.0.
Yes, Ruby 1.9 can support TLSv1.2!— можно ли использовать TLSv1.2 в приложении на Ruby 1.9? Да! И этот туториал покажет, что нужно делать.
Only use named scopes outside models — как улучшить организацию кода и увеличить продуктивность, используя поименованные области действия.
Memoizing in Ruby — туториал по оптимизации работы приложения с помощью мемоизации.
The Local Variable Aversion Antipattern — многие Ruby-разработчики избегают локальных переменных, предпочитая извлеченные методы, однако насколько этот подход хорош? Автор делится опытом и показывает, как можно использовать локальные переменные.
Grpc Tutorial With Ruby — автор решил обновить руководство по настройке grpc для Ruby.
Convert an ActiveRecord object into the fixture — туториал демонстрирует, как превратить объект ActiveRecord в yaml формат.
Refactoring views with Ruby on Rails’ ActiveSupport helpers — автор делится опытом рефакторинга кода при помощи инструментария ActiveSupport.
JSON API Phase 3: API Server — третья из четырех статей цикла о разработке API при помощи Express и Swagger; в этой части описан процесс создания API сервера.
Dry Behaviour aka Protocol Pattern in Ruby — как использовать паттерн Protocol при создании приложения на Ruby.
Managing db schema changes without downtime — автор показывает, как избежать проблем при изменениях схемы данных в Rails-приложении.
JSONify your Ruby Translations — узнайте, как использовать формат JSON для Ruby трансляций.
How to test logs using RSpec expectations and StringIO in Ruby — статья показывает два способа тестирования логов.
UPGRADING TO RAILS 5.1X — разработчик компании RED Panthers делится опытом обновления одного из продуктов до версии Rails 5.1.
Focused `puts` debugging with STDERR — туториал поможет провести отладку не только написанного вами кода, но также кода используемых вами гемов.
Elapsed time with Ruby, the right way — узнайте, как правильно запрограммировать подсчет времени выполнения в Ruby-приложении.
JetRockets
- How we started using Redux-Form in our Rails apps — если вы используете фреймворк React для фронтенда в своем Rails-приложении, то этот туториал покажет вам, как использовать Redux и Redux-Form.
- Protocol OAuth2: let’s play with Doorkeeper & Omniauth/OAuth2. Part 1.— первая статья из цикла о протоколе OAuth2 рассказывает, как создать сервис авторизации с помощью Rails и Doorkeeper.
RubyGuides
- The Definitive Guide to Loops in Ruby — статья научит вас нескольким способам создавать циклы в Ruby.
- How to Write a Ruby C Extension — автор детально описывает, как создать расширение C для увеличения производительности Ruby-приложений.
Codeship
- VueJS as a Frontend for Rails — популярность Vue.js растет и самое время узнать, как использовать его в качестве frontend-фреймоворка в Rails-приложениях.
- VueJS Components with CoffeeScript for Rails — продолжение предыдущей статьи; автор показывает, как использовать компоненты Vue.JS с помощью CoffeeScript в Ruby on Rails.
Релизы
Rails 5.0.7 and 5.1.6 have been released — официально вышли новые версии Rails: 5.0.7 и 5.1.6. Узнайте, что изменилось по сравнению с предыдущими версиями!
Announcing Hanami v1.2.0.beta2 — вышла бета-версия фреймворка Hanami v1.2.0.beta2.
Rails 5.2.0 RC2: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials — Rails-сообщество завершает работу над новой версией нашего любимого фреймворка. Узнайте, что нового во второй предвыпускной версии 5.2.0 RC2.
NGINX Unit Beta — вышла бета-версия сервера приложений Nginx с поддержкой Ruby.
Ruby Gems
Interesting Methods — этот новый гем позволяет быстро просмотреть методы объектов в Ruby.
Deferral — гем позволяет использовать в Rails-приложениях метод defer по образцу Golang.
Pwned — Pwned позволяет использовать Pwned Passwords API для Rails.
Послушать
241: Upgrading Kickstarter to Rails 5 with Logan McDonald — ведущие подкаста обсуждают обновление приложения Kickstarter с Rails 4 на Rails 5.
The Bike Shed
- 147: Is a Lambda a Sandwich?— ведущие обсуждают новинки в Ruby 2.5, в том числе разницу между понятиями block, proc и lambda.
- 144: Fisher Price™ Tools — в этом подкасте авторы обсуждают повестку апрельской конференции RailsConf 2018, опыт использования Rails Твиттером и многое другое.
Ruby Rogues
- RR 352: React on Rails and Webpacker with Justin Gordon and Rob Wise — ведущие обсуждают библиотеку React on Rails, Webpacker (адаптация Webpack под Rails), а также многие другие интересные темы.
- RR 354: Music, Musicians, and Programmers with Catherine Meyers — послушайте увлекательную историю Кэтрин, которая сменила карьеру оперной певицы на карьеру успешного Ruby-разработчика.
- RR 353: Removing Business Logic from Rails Controllers with Aaron Sumner — ведущие обсуждают, как убрать бизнес-логику из Rails-контроллеров, преимущества и недостатки служебных объектов и многое другое.
- RR 355: Code Reviews with Jacob Stoebel — данный подкаст важен каждому разработчику, так как ведущие обсуждают анализ кода, делятся опытом и дают полезные советы.
RWpod
- 09 выпуск 06 сезона. Passenger 5.2.1, Flutter beta 1, Clowne, Pain Points of GraphQL, Reactive Search, Flatbush, Prompts и прочее
- 11 выпуск 06 сезона. Desktop Ruby GUI development, Let’s Encrypt support wildcard certificates, SmooshGate, IDEA и прочее
- 10 выпуск 06 сезона. Using Genetic Algorithms in Ruby, Standardizing lessons learned from AMP, AppBandit, Risk, Coördinator, Mutag и прочее
- 12 выпуск 06 сезона. Towards The Ruby 3×3 Performance Goal, Code editors for Mac, Webdash, ScrollBooster и прочее
Greater Than Code
- 073: Driven By Need, Guided By Example with Dan North
- 072: Story Time with Kerri Miller
- 071: Brein Power with Rein Henrichs
- 070: Trusting The Universe with Kale Kaposhilin
Посмотреть
Method Driven Development — автор описывает Method Driven Development (MDD) — технику, которую он использует при работе с гемом Geocoder.
Develop a Messenger Bot in Pure Ruby — Andy Barnov — Не пропустите видеотуториал о том, как создать чатбота на Ruby при помощи фреймворка Rubotnik.
CSV & XML Injections — YYCRuby Presentation — презентация Гэвина Миллера с митапа YYCRuby; узнайте, как предотвратить CSV и XML injections.
Новая подборка от GoRails, в которой ведущий рассматривает возможности ActiveStorage в Rails 5.2, а также учит создавать шаблоны для Rails-приложений:
- Debugging & Fixing a Bug in Rails 5.2 Active Storage
- How to Create an Active Storage Previewer
- Rails 5.2 ActiveStorage Introduction
- Rails Application Templates
Подборка платных скринкастов от Drifting Ruby в марте
- #123 Encrypted Credentials in Rails 5.2
- #124 SimpleMDE and ActiveStorage
- #125 Turbolinks 5
- #126 Turbolinks iOS Hybrid App
Мартовские выпуски платных скринкастов от Ruby Tapas
- www.driftingruby.com/...turbolinks-ios-hybrid-app
- Episode #518: Humane Exceptions with Hiro Asari
- Episode #519 — Supporting Different Service Versions with OO — Emily Stolfo
- Episode #520: Bundler Tips and Tricks with Andre Arko
События
Remote Ruby — 5 апреля пройдет ежемесячный онлайн-ивент Remote Ruby. Идеально для тех, кто хочет быть в курсе событий в мире Ruby, не выходя из дома!
Rails Girls Rotterdam — 14 апреля в Роттердаме Rails Girls проведут бесплатный однодневный воркшоп.
Конференции
Ruby Meditation #21 — еще не поздно зарегистрироваться на Ruby Meditation, которая пройдет Харькове 14 апреля. Вас ждут интересные и полезные доклады, живое общение и дружеская атмосфера.
RailsConf — если у вас открыта виза в США, не пропустите RailsConf 2018, крупнейшую Ruby-конференцию в мире, которая пройдет
Isle of Ruby — с 13 по 15 апреля в Великобритании пройдет Isle of Ruby — фестиваль, где разработчики делятся опытом и отдыхают всем Ruby-комьюнити.
RubyConfBY 2018 — 21 апреля в Минске пройдет третья конференция RubyConfBY. Темы включают ускорение Ruby при помощи JIT-компилятора и перспективах использования языка Ruby в машинном обучении.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #15