Conference for DevOps, Software Architects and Engineers. Register until August, 22!
×Закрыть

Ruby/Rails дайджест #20: первая предрелизная версия Rails 5.2.1, версия 2.0.0 гема Pundit, интересные материалы с RubyHACK 2018

Всем привет! Разгар лета не отразился на активности Ruby-сообщества — кроме релизов новых версий гемов и Rails, также проводилось множество конференций и митапов. Все подробности — в нашем новом дайджесте.

Почитать

Running JRuby on the Graal JIT — автор рассказывает о производительности интерпретатора JRuby, запущенного на виртуальной машине GraalVM.

E-Commerce at Scale: Inside Shopify’s Tech Stack — разработчикам на e-Commerce проектах будет интересно узнать подробности о стеке технологий Shopify.

Notes on writing Service Objects — автор делится советами по написанию service objects.

Escaping the SPA rabbit hole with modern Rails — как избежать проблем в написании SPA (single-page applications) на Rails.

How to Create an API Wrapper of an External Service in Rails — автор показывает, как написать обертку для внешнего API.

Refactory scenario: removing conditional blocks and extracting code to a private method — простой и полезный способ рефакторинга кода в Rails.

Doing more on reads vs writes — автор делится мнением о балансе между сложностью чтения и записи данных.

Preventing False Positives in RSpec When Testing Exceptions — как избежать ложных положительных результатов при тестировании исключений при помощи RSpec.

Don’t Step on a Rake, Use Rake::DSL — как создать wrapper class для Rake-задач, чтобы не загрязнять top-level scope.

Designing job queue in Redis — учимся создавать job queue с помощью Redis.

My favorite parts of Ruby — автор делится мнением о некоторых чертах языка Ruby.

Making Ruby Yours — как с помощью Refinements безопасно изменять методы, которые объявлены в стандартной библиотеке Ruby.

Ruby 2.6 adds Matrix#antisymmertic? — в Ruby 2.6.0-preview2 можно использовать метод Matrix#antisymmetric?, чтобы определить тип матрицы.

Painlessly managing long running processes in your views using Ruby on Rails — как легко настраивать долго выполняющиеся задачи в представлениях при помощи инструмента fie.

Hiding .gemrc credentials in dotfiles — автор показывает, как обеспечить безопасность хранения учетных данных в dotfiles.

Stop shipping untested Ruby code with undercover — как гем Undercover помогает выявлять код на Ruby, не покрытый тестами.

Подборка от Appfolio Engineering

Ruby Memory Environment Variables — Simpler Than They Look — как environment variables помогают оптимизировать использование памяти в приложениях на Ruby.

Ruby’s Global Method Cache — узнайте, что такое global method cache в Ruby и как его размер влияет на скорость работы приложений.

Can I Use Ten 10% Speedups to Make Ruby Instant? — автор объясняет, как различные методы ускорения оптимизируют работу приложения на Ruby.

Подборка от AppSignal

Custom Exceptions in Ruby — подробная инструкция о том, как работать с собственными исключениями (custom exception) в приложениях на Ruby.

Under the Hood: «Slurping» and Streaming Files in Ruby — автор рассказывает и показывает, как работать с большими файлами при помощи встроенных в язык Ruby инструментов.

JavaScript-sprinkled Rails Applications — узнайте, как JavaScript sprinkles помогают ускорить обработку страниц с динамическим или пользовательским контентом в приложениях на Rails.

Generating Random Numbers in Ruby — учимся генерировать случайные числа различными способами в Ruby.

Подборка от BigBinary

Rails 5.2 added method write_multi to cache store — Rails 5.2 позволяет делать несколько записей в хранилище кэша одновременно при помощи метода write_multi.

Speeding up Docker image build process of a Rails application — автор делится опытом ускорения процесса создания образа Docker в приложении на Rails.

Продолжение цикла статей о нововведениях в Ruby 2.6:

Подборка от Cezar Halmagean

What Is Ruby Used For? — полезная статья для новичков, в которой автор рассказывает о языке Ruby и фреймворке Rails.

How to Use the Each Method in Ruby — статья подробно описывает, как работает метод each в Ruby.

Learn How to Use Ruby Arrays in Less Than 10 Minutes — полезный гайд, который объясняет, как использовать массивы в Ruby.

How to Use Strings in Ruby — освежаем в памяти, что такое строки (strings) и как они используются в Ruby.

How to Use the Ruby Map Method — в этой статье автор подробно разбирает метод map в Ruby.

What Is a Ruby Enumerable and Why Would You Use It? — для чего нужен модуль Enumerable в Ruby и как его использовать.

Why You Too Should Learn Elixir — почему Ruby/Rails разработчикам полезно изучать язык программирования Elixir.

If vs. Unless in Ruby — вспоминаем, чем отличаются операторы if и unless.

Ruby’s Sort and Sort_by — автор описывает различные алгоритмы сортировки и поясняет, как работают методы sort и sort_by в Ruby.

What Is a Ruby Reducer? — учимся использовать метод reduce в Ruby.

How to Learn Ruby on Rails in 2018, the Ultimate Guide — полезные советы, с чего начать изучение Ruby on Rails.

Статьи о фреймворке RSpec:

Подборка от Codeship

Measuring Performance Metrics in Rails — какие метрики важны для измерения производительности приложений на Rails и какими инструментами пользоваться для этого.

Using AWS EKS in Your Continuous Integration Workflow — туториал показывает, как настроить процесс CI/CD для приложения, развернутого на сервисе AWS EKS, при помощи инструмента Codeship Pro.

Подборка от Imaginary Cloud

Queries on Rails — Showcasing Active Record and Arel — автор на примерах показывает, как составлять запросы в Active Record.

Ruby on Rails — Send Emails with Style — узнайте, какие гемы упрощают процесс верстки рассылок в Rails-приложениях.

Подборка от Jason Swett

Why I Recommend Against Using Cucumber — автор делится мнением о Cucumber — популярном фреймворке для тестирования.

Things You Can (and Should) Ignore When Getting Started with Rails Testing — узнайте, какими инструментами тестирования для Rails, по мнению автора, можно пренебречь.

Подборка от Netguru

11 Books Every Ruby on Rails Developer Should Read — подборка книг, которые следует прочитать каждому Ruby on Rails разработчику.

Python Vs. Ruby for Web App Development — автор сравнивает два популярных языка программирования, используемых для разработки веб-приложений.

Подборка от Railsware

Ruby on Rails for FinTech Products. Is it a fit for your startup? — автор делится своим мнением по поводу использования фреймворка Rails для создания Fintech-приложений.

Ruby on Rails Hosting Providers for Your Application — узнайте, какие критерии важны при выборе хостинга для Rails-приложения, а также какие основные варианты предлагаются на рынке.

Подборка от RubyGuides

The Definitive RSpec Tutorial With Examples — подробная инструкция по написанию тестов при помощи RSpec.

Everything You Need to Know About Ruby Operators — автор описывает различные типы операторов в Ruby и на примерах показывает, как их использовать.

Подборка от Rubyplus

Integrating Turnjs with Rails 5 — как интегрировать JavaScript-библиотеку Turn.js в приложение на Rails 5.

Handing Undeliverable Email Address in a Rails app — учимся настраивать обработку электронных писем с неправильно указанным адресом в приложениях на Rails.

Bootstrap 4.1 alerts in Rails 5 Apps — как использовать нотификации в стиле сигналов Bootstrap 4.1 в приложениях на Rails.

Dealing with Money in Rails Apps — как использовать гем money-rails в Rails-приложениях, работающих с разными валютами.

Capistrano 3.11 Tips — полезные советы о том, как работать с инструментом Capistrano.

Deliver Email With Amazon SES In A Rails app — инструкция, как настроить отправку и получение электронных писем при помощи сервиса Amazon SES в приложении на Rails.

Finger Printing to Identify Visitors to Your Site — учимся настраивать идентификацию браузера (fingerprinting) в Rails-приложениях.

Rails 6 : find_or_create_by on a has_many relationship — в Ruby on Rails 6.0.0.alpha метод find_or_create_by можно вызывать на ассоциации has_many.

Dealing with Spaces in S3 Files Stored within Folders in a Bucket — как убрать пробелы в названиях файлов, хранящихся в Amazon S3.

Generating Presigned URL for AWS S3 Files — как ограничить доступ к файлам, хранящимся в Amazon S3, при помощи назначенных URL.

Подборка от Tomas Valent

Rails 5.2 credentials cheat cheat — советы, как пользоваться шифрованными учетными данными (encrypted credentials) в Rails 5.2.

Ruby on Rails Active Storage how to change host for url_for — как установить хост по умолчанию для метода url_for.

Туториалы

Build a Realtime Serverless GraphQL API with Websockets on AWS — подробная инструкция, как написать бессерверный GraphQL API с помощью сервиса AWS AppSync.

Upgrade Rails from 5.0 to 5.1 — как обновить приложение на Ruby on Rails с версии 5.0 до 5.1.

Visualizing and optimizing JS bundle size in Rails/Webpacker apps — детальная инструкция о том, как оптимизировать размер bundle.js в приложении на Rails с компонентом на React.

Adding Webpacker to a legacy Rails app — учимся интегрировать гем Webpacker в legacy-приложение на Rails.

Writing Testable API Documentation Using APIB and Dredd — пошаговый туториал показывает, как написать пригодное к тестированию Rails API приложение и документацию к нему.

Powering your Ruby & Rails development with Pry — в этом туториале автор показывает, как использовать интерактивную консоль Pry в разработке на Ruby on Rails.

ActiveRecord — Part 2: Useful methods — учимся использовать полезные методы в Active Record.

How to use Sequel with ActiveRecord database — этот туториал научит вас использовать гем Sequel при работе с базой данных Active Record.

Thin and maintainable Rails mailers: how we refactored Rails mailers at mkdev — автор делится опытом рефакторинга отправки писем в приложении на Rails 5.1.

Running rails tests under CircleCI 2.0 with MariaDB — краткий туториал по настройке CircleCI 2.0 для Rails-приложения.

Adding Authorization to Sinatra with Pundit — автор показывает, как использовать инструмент Pundit в приложениях на фреймворке Sinatra.

Create your own static site generator — простой способ написать генератор статических сайтов на Ruby.

Training Tesseract 4 models from real images — как тренировать новые модели для Tesseract — популярного open source инструмента для оптического распознавания символов.

Релизы

Rails 5.2.1.rc1 — первая предрелизная версия фреймворка Rails 5.2.1.

Pundit — вышла версия 2.0.0 популярного гема Pundit.

RubyMine 2018.2 (build 182.3684.86) — компания JetBrains выпустила очередное обновление своей IDE RubyMine; сборка 182.3684.86 имеет ряд улучшений, таких как возможность переформатировать код в формате YAML, использовать debugger для удаленно выполняемых процессов, поддержку новых функций JavaScript 2.9 и 3.0 и так далее.

Ruby Gems

SimpleSerializer — гем преобразует объекты Ruby в формат JSON.

XmlMatchers — гем предоставляет matchers для тестирования XML в RSpec.

StaleOptions — библиотека кэширует HTTP-ответы.

YaEnum — гем расширяет возможности использования данных типа enum в Ruby.

OpenStreetMap — библиотека для интеграции OpenStreetMap API.

Послушать

The Bike Shed

161: Re-Incoherence — ведущие подкаста обсуждают производительность Rails, чрезмерное использование памяти в Active Record 5.2, а также rebalancing coherence.

162: You Have Ruined Your Rails App — в этом подкасте ведущие и Sam Phippen обсуждают, почему сложно поддерживать приложения на старых версиях Ruby, что такое service-oriented architecture (SOA), а также много других интересных тем.

163: Insert Some Colons For Me — главная тема подкаста — IDE Visual Studio Code от компании Microsoft.

164: A Piece of My Identity — ведущие подкаста Derek Prior и Sean Griffin сообщают о своем уходе из проекта; их сменит новый ведущий — Chris Toomey.

Ruby Rogues

RR 369: How Ruby 2.5 Prints Backtraces and Error Messages with Vishal Telangre — ведущие и гость подкаста Vishal Telangre из компании BigBinary обсуждают преимущества обратного порядка вывода backtrace и сообщений об ошибках в Ruby 2.5.

RR 370: How I Built Timeasure with Eliav Lavi — основная тема подкаста — гем Timeasure, который позволяет измерить производительность методов в Rails-приложении на production.

RR 371: The Modular Monolith: Rails Architecture with Dan Manges — гость подкаста — Dan Manges из компании Root — рассказывает об архитектуре Modular Monolith для приложений на Rails.

RWpod

The Ruby Testing Podcast

  • 003 — Aaron Sumner — ведущий берет интервью у Aaron Sumner — автора книги Everyday Rails Testing with RSpec.
  • 004 — Yoseph Radding — в этом выпуске ведущий и гость подкаста обсуждают понятие TDD, принципы SOLID, а также шаблоны проектирования (design patterns).

Посмотреть

www.youtube.com/watch?v=gTNC26BtRFc#t — презентация создателя языка Ruby Yukihiro «Matz» Matsumoto на митапе RubySG в Сингапуре.

Writing Ruby Like it’s 2018 — доклад Joe Leo на прошедшей в июне конференции GORUCO 2018.

OmbuCast Episode 1 — Performance improvements using derailed_benchmarks — ведущий показывает, как использовать гем Derailed Benchmarks для тестирования приложений на Ruby on Rails.

Showcase of Scraper App, Visual Web Scraping Prototype — в этом скринкасте Paweł Urbanek показывает прототип приложения для веб-скрейпинга Scraper App.

Подборка докладов с прошедшей в мае конференции RubyHACK 2018:

Июльские выпуски GoRails, в которых ведущий подробно разбирает, как интегрировать приложение на React Native с Rails API при помощи протокола OAuth для аутентификации, а также показывает, как отсылать webhooks при помощи экспоненциальной задержки (exponential backoff):

Июльская подборка платных скринкастов от Drifting Ruby:

Выпуски платных скринкастов от Ruby Tapas за июль:


Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.


← Предыдущий выпуск: Ruby дайджест #19

LinkedIn

Подписаться на комментарии