Ruby/Rails дайджест #16: официальный релиз Rails 5.0.7 и 5.1.6, новая бета-версия Hanami, создаем Slack bot на Rails
Всем привет! Март порадовал 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 в машинном обучении.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #15