Всем привет! Рады представить вам Ruby/Rails дайджест за август.
В последний месяц лета предлагаем вам прочесть советы по улучшению работы Ruby/Ruby on Rails и увеличению скорости выполнения RSpec тестов, обратить внимание на подборку статей блога Arkency, посмотреть новые релизы и библиотеки, а также узнать о различных meetup’ах и конференциях, которые активно будут проходить этой осенью.
Почитать
Faster Rails: Eliminating N+1 queries — сталкиваетесь с проблемой медленной производительности RoR, когда в приложении растет количество запросов? В статье найдутся советы, как разобраться и поладить с N + 1 запросами.
Tips on Treating Flakiness in your Rails Test Suite — flaky тесты — это досадная реальность разработки программного обеспечения. В статье собран список полезных советов для решения этой проблемы.
The — profile hammer and RSpec — ищете причину, из-за которой снижается скорость выполнения RSpec тестов в Rails приложении? Иногда ответ кроется в очень простых решениях. Где искать и как устранить проблему, вы узнаете в этой подсказке.
How I got RSpec to boot 50 times faster — решение, как в 50 раз увеличить скорость выполнения RSpec тестов и сэкономить время рабочего цикла.
How To Write Bug Report The Right Way — полезный гайдлайн, как писать отчеты об ошибках, чтобы их было легче устранять.
Why it is just lazy to bad-mouth Ruby on Rails — предрассудки в сообществах разработчиков — частое явление. Пока одни настаивают на том, что Ruby on Rails перестает быть популярным, автор статьи доказывает, что идея на счет смерти фреймворка сильно преувеличена. Предлагаем пройтись по истории RoR и узнать, на каком этапе развития находится фреймворк сейчас.
Managing localization in Rails — если ваше приложение должно поддерживать несколько языков, эти подсказки послужат полезным темплейтом, как настроить процесс локализации для больших приложений.
Exercises for Programmers (in Rails): Say Hello — книга «Exercises for Programmers» полезна, даже если вы только начинаете изучать программирование. На личном примере автор показывает выполнение базовых упражнений из книги в своем приложении Rails.
4 Ways to Secure Your Authentication System in Rails — как лучше обезопасить систему аутентификации в Rails? Какие для этого есть способы? После прочтения статьи, в которой предлагается углубленное понимание безопасности и аутентификации в целом, выбор сделать будет проще.
Advanced Enumeration with Ruby — объяснение использования методов Enumerable в Ruby.
Elixir Envy ᐅ Ruby — pipe operator помогает коду обладать большей ясностью, большей модулярностью и позволяет проще работать с базой кода. И это не только прерогатива языка Elixir. В статье перечисляются способы, как можно применять pipe operator в языке Ruby.
Ruby State Machine — AASM Tutorial with Sequel, SQLite, Rake and RSpec — если вы сталкиваетесь с проблемой управления логикой изменения состояния записи, (например, управление заказами в магазине), на помощь придет AASM — машина состояний. В этом туториале вы найдете решение, как объединить AASM с Sequel и как создать микро приложение Ruby с помощью Rake, DotEnv, SQLite и RSpec.
A Deep Dive into CSRF Protection in Rails — а вы знали, что Ruby on Rails может защищать от опаснейшей атаки Cross-Site Request Forgery? В статье найдется все, что необходимо знать, чтобы у хакеров не было возможности выполнить действия от имени других, зарегистрированных посетителей на вашем сайте.
A look at how Ruby interprets your code — в статье объясняется, как язык Ruby интерпретирует наш код и как мы можем использовать это знание в наших интересах.
Is WEBrick Webscale?— если web-сервер WEBrick считается самым медленным, стоит ли им пользоваться? В статье сравнивается WEBrick с одним из самых быстрых web-серверов NGINX, чтобы выяснить насколько быстро он масштабируется.
A Crash Course in Analyzing Memory Usage in Ruby — исходя из собственного кейса, автор предлагает рассмотреть, как можно использовать память в Ruby.
Using Ruby and Amazon SQS FIFO Queues — Amazon SQS — это надежный и высоко масштабируемый полностью управляемый сервис очередей. В статье описывается, как с его помощью возможна обработка сообщений всего один раз и в том порядке, в котором они отправлены.
Why Hanami will never unseat Rails — статья о динамике web-экосистемы Ruby on Rails и объяснение, почему не стоит ее сравнивать с Hanami.
Creating a Ruby DSL: A Guide to Advanced Metaprogramming — в этой статье вы узнаете, какие бывают предметно-ориентированные языки (DSL), когда они должны использоваться, и как вы можете создать свой собственный DSL в Ruby с использованием передовых методов метапрограммирования.
TestProf: a good doctor for slow Ruby tests — если вы все еще задаетесь вопросом о важности производительности выполнения тестов, обязательно прочитайте эту статью. В ней вы узнаете занимательную статистику выполнения тестов. А также вы познакомитесь с мета-гемом TestProf — набором инструментов для Ruby тестов.
Rails Techniques: Using Polymorphic Associations — туториал, который поможет улучшить понимание о полиморфных отношениях. В Ruby on Rails они представляют собой отношения Active Record, которые могут устанавливать связь одной модели с несколькими другими моделями.
Подборка статей за август от Arkency:
- When DDD clicked for me — история, как автору удалось понять концепции проблемно-ориентированного проектирования и применить их в своих проектах Rails.
- My first 10 minutes with Eventide — в статье автор описывает свое знакомство с Eventide — автономными сервисами event-source, которые являются инструментарием для Ruby с поддержкой Event Store и Postgres.
- My fruitless, previous attempts at not losing history of changes in Rails apps — кейс, как не потерять историю изменений в Rails-приложениях.
- That one time I used recursion to solve a problem — кейс о том, как для event-платформы с помощью рекурсивной функции реализовать алгоритм, который планировал бы напоминания постепенно реже с момента покупки до даты события, и аналогично в другом направлении.
- What I learned from reading spreadsheet_architect code — в этой статье автор разбирает, как работает код гема spreadsheet_architect.
- The === (case equality) operator in Ruby — туториал на тему модуля Enumerable в Ruby, в котором рассматриваются самые популярные API и некоторые менее популярные, но очень полезные.
Batching — A powerful way to solve N+1 queries every Rubyist should know — в статье описывается метод, с помощью которого можно избежать запросов N + 1. Также вы узнаете о существующих проверенных временем инструментах, таких как Haskell Haxl и JavaScript DataLoader, и о том, как подобные подходы могут использоваться в любой программе Ruby.
Integrating Ruby on Rails Static Analysis with Codeship — инструменты статического анализа — это программы, которые определяют правильность и достоверность кода без его выполнения. В этой статье описывается пример использования статического анализа в проекте на Ruby on Rails.
Fabrication vs FactoryGirl — сравнение библиотек Fabrication и FactoryGirl, которые позволяют генерировать тестовые данные с помощью простого синтаксиса.
Writing Slack Command APIs in Ruby — серия туториалов, как настроить новую команду в мессенджере Slack с использованием Ruby и Heroku в качестве backend-сервиса. По прохождению туториалов вы сможете написать свой собственный API и отправлять прямые сообщения пользователям в Slack.
Riffing on `interpose` implementations in Ruby — туториал о выполнении функции ‘interpose’ в Ruby on Rails.
Using Gemstash for Private Gem Hosting — гайд, который подробно расскажет, как настроить частный сервер Gemstash, работающий через TCP или SSL, который вы можете использовать для хостинга своих гемов или их лицензирования для других пользователей.
Unsupervised learning using k-means clustering in Ruby — алгоритм кластеризации k-mean — это алгоритм, который используется для деления немаркированных данных на ряд кластеров связанных данных. Он используется для таких задач, как сегментация рынка, анализ социальных сетей, компьютерный кластерный анализ и анализ астрономических данных. В статье представлено решение проблемы безконтрольной кластеризации в Ruby, с помощью гема kmeans-clusterer.
Teaching an AI to play a simple game using Q-learning — туториал, как научить компьютер овладеть простой видеоигрой, используя алгоритм обучения q-learning. Алгоритм выполняется с нуля на Ruby, без использования гемов.
Make unit tests great again — Integrate Jasmine into Rails — Jasmine — это фреймворк для написания тестов для кода Javascript в стиле Behavior Driven Development (BDD). В этой статье вы узнаете, как интегрировать Jasmine в существующее приложение Rails, и как писать чистые и красивые модульные тесты.
Managing threads with Queue and SizedQueue — чтобы приложения одновременно выполняли несколько операций быстро, мы можем использовать потоки в Ruby. Узнавайте в статье, как настроить потоки с помощью классов Queue and SizedQueue.
A Quick Analysis of How Sinatra Works — Sinatra — это альтернатива популярным фреймворкам на Ruby. В туториале вы узнаете, как Sinatra инициализируется, как он обрабатывает запрос и выполняет различные шаги, пока не будет получен ответ.
Practical Linked List in Ruby — туториал на тему создания связанных списков (linked lists).
Adding Token Based Authorization to a Rails API with Devise Token Auth — автор учит, как реализовать аутентификацию в простом Rails API приложении с помощью гема Devise Token Auth.
Factories of Fixtures? Give Me Both!— интересно исследование на тему одновременного использования фабрик (Factory Girl) и фейкеров (ffaker) для того, чтобы избежать массивных структур данных.
Five Ruby Methods You Should Be Using — в Ruby, как и в других языках программирования, есть различные способы решения одной и той же задачи. Автор статьи рассказывает о пяти must-have методов в Ruby, которые помогают решать задачи более эффективно.
Using Rails 5 Action Cable and RethinkDB to Build a Creative WebSocket App — узнайте, как построить WebSocket-приложение, используя Action Cable в Rails 5. RethinkDB поможет избежать использования отдельного сервиса вроде Redis.
Why I do not use strong parameters in Rails — strong parameters, хоть и были частью улучшений в Rails 4, все равно являются источником проблем для разработчиков. В статье говорится о том, как не использовать strong params и при этом оставаться ответственным разработчиком.
ActiveRecord’s queries tricks — 5 уловок для запросов ActiveRecord.
Integrating a Third Party API with Rails 5 — быстрый и простой пример того, как интегрировать API сторонних производителей в ваше Rails 5 приложение.
How I lost 17.000 GitHub Auth Tokens in One Night — даже у опытных разработчиков случаются epic fails: история от Richard Schneeman о потере authentication token’ов и попытке их восстановить.
Random
Results of the Code Quality Tools survey — сравните популярные инструменты для определения и улучшения качества кода, которые используются разработчиками чаще всего.
Coder Frozen in 2009 Awakens to Find Frontend Development not Awful — Richard Schneeman, основатель KEEP RUBY WEIRD, делится впечатлениями о том, как изменилась frontend разработка с тех пор, как он перестал ею заниматься, и рассказывает о некоторых недавних изменениях в инструментах и API.
The Longest Email I Ever Sent (Programmatically) — если ваш сайт поддерживает сервис рассылки писем, не поленитесь узнать, какая ошибка в фоновой задаче может повлиять на отправку огромных писем клиентам. Узнайте, как автор нашел проблему и устранил ее основные причины.
Ruby Tests Profiling Toolbox — полезная подборка различных инструментов для анализа производительности комплектов тестов (test suites).
Multiple Vulnerabilities in RubyGems — новости с официального сайта ruby-lang: отчет по уязвимостям в RubyGems и их решение.
Послушать
Подкасты «My Ruby Story» от Ruby Rogue познакомят нас с разработчиками, которые расскажут, как попали в мир Ruby/Ruby on Rails, о своем вкладе в сообщество Ruby и о том, как они изучают новые технологии:
- Ruby Rogues: My Ruby Story #014 Noel Rappin — гость Noel Rappin рассказывает о своих вкладах в сообщество Ruby и о том, как он изучает новые технологии, такие как Elixir.
- Ruby Rogues: My Ruby Story #015 Amir Rajan — гость Amir Rajan ранее уже выступал в подкастах Ruby Rogues. В этом выпуске он расскажет о том, где он использовал Ruby и, как он попал в RubyMotion.
- Ruby Rogues: My Ruby Story #016 Marc-Andre Cournoyer — в этом эпизоде гость Marc-Andre Cournoyer, создатель web-сервера Thin, расскажет свою историю о том, как он занялся программированием и Ruby.
Подкасты Ruby Rogue о новостях мира Ruby/Ruby on Rails за август:
- RR 321: Visual Studio Code Ruby Plugin with Penn Lv
- RR 322 Finding a Great Job
- RR 323: Queuing and Amazon SQS with Kinsey Ann Durham
- RR 324: Developer Horror Stories
Пятый сезон на канале RWpodпродолжается. Предлагаем ознакомиться с подкастами за август:
- 31 выпуск 05 сезона. Rails 5.1.3, Elixir Envy ᐅ Ruby, Orchparty, Graphql-Guard, TensorFire, WTF.JS, Shoelace.css и прочее
- 32 выпуск 05 сезона. Atom 1.19, Faster Rails: Eliminating N+1 queries, Hunting Malicious npm Packages, React-simple-maps и прочее
- 33 выпуск 05 сезона. Six confusing features in Ruby, TestProf: a good doctor for slow Ruby tests, Repatch, Iroh и прочее.
Посмотреть
#92 Restricting Access by IP Address — скринкаст объясняет, как ограничить доступ к вашем Rails-приложению или его части через IP адрес.
#93 Recurring Events with ice_cube — в очередном скринкасте от DriftingRuby идет речь о том, как библиотека ice_cube помогает справляться с повторяющимися задачами.
Facebook API and Refreshing Auth Tokens with Koala — подробный скринкаст об использовании Facebook API и обновлении токенов аутентификации с гемом Koala.
Geolocation and Search with Geocoder — скринкаст от Gorails по определению географического положения с гемом geocoder и поиску по базе данных через локацию.
Login with Multiple OAuth Providers using Omniauth — узнайте, как дать возможность вашим пользователям одновременно логиниться с помощью множественных OAuth-провайдеров, включая Twitter, Facebook, GitHub и Google.
Testing Emails in Development with Mailcatcher — если вы ищете альтернативу гему letter_opener, посмотрите скринкаст про отправку email’ов на локальный SMTP сервер Mailcatcher.
How I use Environment Variables with Rails secrets — скринкаст раскрывает секреты работы с environment variables и решение распространенных проблем, связанных с ними.
#67 ActiveJob in Rails 5.1 — смотрите видео про основы использования ActiveJob и Resque в Rails 5.1.
Релизы и библиотеки
Библиотеки
kNN Classifier written in Ruby — свежая библиотека ruby-knn предоставляет kNN-классификатор, написанный на Ruby.
Fine-ants-app — небольшое Rails-приложение на основе гема ants-app для агрегации персональных данных.
Golden Cobra — Golden Cobra — open-source CMS на Ruby on Rails. Проект отлично документирован на GitHub, поэтому разобраться с Golden Cobra не составит проблем.
HexaPDF — библиотека для работы с PDF-файлами. Функции HexaPDF включают в себя создание PDF-файлов, изменение существующих файлов (слияние и извлечение нужных страниц, фрагментов и изображений), оптимизация размера файлов и много других необходимых операций.
Daru — библиотека для анализа, манипулирования и визуализации данных в Ruby.
RorVsWild — гем для мониторинга производительности Ruby on Rails приложений.
Trestle — довольно молодой admin-фреймворк для RoR приложений.
Graphql-guard — гем, который предоставляет авторизацию для graphql-ruby.
Xport — новый гем для экспорта Rails моделей в XLSX/CSV файлы.
Enhanced Rails Architecture — свежий список архитектурных паттернов для особенностей, выходящих за пределы Ruby on Rails архитектуры.
Async — Компонуемый I/O фреймворк для Ruby.
Релизы
Версия Rails 5.1.3, выпущенная 3 августа, включает в себя незначительные изменения в Action Cable, Action Mailer, Action Pack, Active View, Active Job, Active Model, и других Rails-компонентах. Полный список изменений смотрите на GitHub.
Также команда коммитеров Ruby on Rails расшириласьтремя новыми разработчиками. Команда коммитеров (commiters team) работает наряду с core team Ruby on Rails за исключением того, что не имеет доступа к финальным релизам и set policy. Тем не менее, все участники core-команды начинали с commiters team, и очевидно, что новые разработчики очень скоро присоединятся к ключевой команде RoR.
Книги
Рекомендуемые
Domain-Driven Rails — 23 августа вышла книга Domain-Driven Railsот Arkency. Книга доступна в электронном варианте и есть уже в продаже на официальном сайте.
Best Ruby & Ruby On Rails books in 2017 — перечень лучших книг Ruby и Ruby on Rails, курсов, видеороликов и учебных пособий, которые помогут изучать Ruby и Ruby on Rails.
Релизы
Component-Based Rails Applications: Large Domains Under Control — в феврале 2018 состоится релиз Component-Based Rails Applications: Large Domains Under Control‒ профессиональная серия по Ruby от Addison-Wesley.
Курсы
Курсы по Ruby/Ruby on Rails от RubyGarage — в начале октября стартуют Ruby/Ruby on Rails курсы от RubyGarage для тех, кто хочет освоить профессию «Web-разработчик». Прием тестовых заданий и регистрация закончились, но вы всегда можете отслеживать события на нашей страничке в Facebook.
События
Training with Nick Sutterer — Trailblazer 2.1 — 8 сентября Ruby Meditation устраивает тренинг с Nick Sutterer, который расскажет о Trailblazer 2.1, архитектуре высокого уровня для Ruby.
RUBY Meditation #17 — 9 сентября в Киеве пройдет Ruby Meditation ‒ митап для обмена знаниями и полезными практиками. Один из ключевых спикеров ‒- Nick Sutterer, создатель Trailblazer ‒ выступит с докладом «Workflows and BPMN with Trailblazer». Также смотрите полный список спикеров и темы докладов на официальном сайте.
IT Weekend Ukraine 2017 & Ukrainian IT Awards 2017 — 16 сентября в Киеве пройдет ежегодное событие IT Weekend Ukraine, которое объединяет более тысячи участников, чтобы погрузиться в мир инноваций вместе с глобальными техническими экспертами.
Rails Girls Rzeszów — с 16 по 17 сентября в городе Жешув, Польша будет проходить митап Rails Girls. На сайте уже есть расписание. Ивент бесплатный, но не забудьте зарегистрироваться.
RailsClub Moscow 2017 — в Москве 23 сентября пройдет конференция Ruby/Ruby on Rails ‒RailsClub. Среди множества выступающих будут присутствовать Richard Schneeman, Piotr Solnica и Nick Sutterer!
EURUKO 2017 — с 29 по 30 сентября в Будапеште, Венгрия будет проходить ежегодная европейская конференция EuRuKo 2017. Расписание уже есть на сайте. Среди многочисленных спикеров выступают Yukihiro «Matz» Matsumoto — создатель языка Ruby и один из разработчиков JRuby Charles Nutter.
RUBY Meditation #18 — 7 октября стартует Ruby Meditation #18. Выступающие и темы еще не утверждены, но пока информацию можно отслеживать на страничке в Facebook.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #8