×Закрыть

Ruby/Rails дайджест #9: обновления RoR, полезные скринкасты от GoRails и анонс масштабных Ruby конференций

Всем привет! Рады представить вам 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 Rogue о новостях мира Ruby/Ruby on Rails за август:

Пятый сезон на канале RWpod продолжается. Предлагаем ознакомиться с подкастами за август:

Посмотреть

#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
Следующий выпуск: Ruby дайджест #10

LinkedIn

1 комментарий

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Хороший обзор. Спасибо большое !

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