Ruby/Rails дайджест #8: релиз Active Storage, масштабируется RoR или все-таки нет, курсы по изучению Ruby/Rails
Всем привет! В июле было много горячих новостей, и мы хотим поделиться ими в нашем дайджесте.
Предлагаем вашему вниманию новости о Active Storage, подборки статей о принципе SOLID, машинном обучении и искусственном интеллекте с использованием языка Ruby, дискуссию о масштабируемости Ruby on Rails, а также множественные туториалы и кейсы на тематику Ruby/Rails. Не забудьте проверить, какие конференции проходят осенью и что вас ждет на курсах по изучению Ruby/Ruby on Rails от RubyGarage.
Почитать
Серия из пяти статей, где каждому SOLID принципу посвящена отдельная статья и приводятся примеры, как можно использовать эти принципы в Ruby:
- [S]OLID — Single Responsibility Principle by example — принцип единственной ответственности.
- S[O]LID — Open/Closed Principle by example — принцип открытости/закрытости.
- SO[L]ID — Liskov Substitution Principle — принцип подстановки Барбары Лисков.
- SOL[I]D — Interface Segregation Principle — принцип разделения интерфейса.
- SOLI[D] — Dependency Inversion Principle — принцип инверсии зависимости.
How to test Rails app using Mocha JS and Chai JS ? — рекомендации, как интегрировать JavaScript-библиотеки Mocha JS и Chai JS в приложение Ruby on Rails для еще более качественного тестирования.
The Ultimate Guide to Blocks, Procs & Lambdas — из этого туториала вы узнаете, как работают блоки в Ruby, какая существует разница между procs и lambdas и об эффекте «замыкание», который возникает каждый раз, когда вы создаете блок.
Graphing Benchmark Results in Ruby — иногда результаты сравнительного теста сложно читать из-за большого количества данных. Самый лучший способ показать статистику производительности через графики.
Running feature specs with Capybara and Chrome headless — в виду того, что Chrome позволяет запуск браузера в среде без графического пользовательского интерфейса, поддержка PhantomJS перестала быть необходимой. Как настроить запуск feature specs с помощью Capybara и Chrome без GUI, читайте в туториале.
Ruby on Rails Code Audits: 8 Steps to Review Your App — чтобы приложение было качественным, стоит обратить внимание на чеклист по контрольной проверке кода приложения на Rails.
Подборка статей за июль от PracticalAI.io. Как интегрировать машинное обучение и искусственный интеллект в проекты по разработке программного обеспечения с использованием языка Ruby:
- Implementing Simple Classification using a Neural Network in Ruby — реализация простой классификации с помощью нейронной сети.
- How to debug and diagnose Machine Learning problems — тестирование и отладка созданных моделей.
- Implementing classification using a SVM in Ruby — реализация классификации с использованием Support vector machine (SVM).
How to get your Rails data into your React component with webpacker — гем webpacker — это простой способ использовать библиотеки JavaScript на Rails с применением собственных инструментов JS, таких как Yarn и Webpack. В туториале вы найдете решение, как передать данные Rails в компонент React с помощью webpacker.
Using influxdb with ruby — база данных InfluxDB нужна для хранения временных рядов, метрик и информации о событиях. В этом гайде узнавайте о преимуществах, как работает и как лучше использовать InfluxDB на Ruby.
How to safely store API keys in Rails apps — советы, как безопасно хранить API ключи в Rails приложениях, автор рассматривает все за и против каждого из подходов.
nil?, empty?, blank? in Ruby on Rails — what’s the difference actually? — знаете ли вы разницу между методами ‘nil?’, ‘empty?’, ‘blank?’, ‘present?’? Это стандартные методы Ruby или они включены в Rails? В статье предлагается разобраться, какие методы и когда необходимо использовать.
How to quickly add graphs and charts to Rails app — статья о том, как быстро визуализировать данные в приложении Rails с помощью Google Charts.
Two Tests You Should Run Against Your Ruby Project Now — для вас важны безопасность и юзабилити проектов, над которыми вы работаете? В таком случае, узнавайте больше о тестах «Security audit» и «Licensing audit» для создаваемых Ruby приложений.
Споры о производительности фреймворка Rails не дают покоя сообществу RoR. Стоит ли выбирать фреймворк Ruby on Rails для разработки web-приложения или есть альтернативные варианты? Любые мнения имеют право на высказывание, лучше всего ознакомиться со всеми мнениями и принять самостоятельное решение:
- Is Ruby Too Slow For Web-Scale? — статья о масштабируемости Ruby on Rails и почему стоит выбрать этот фреймворк для создания веб-приложения.
- Rails Web-Scale is Expensive — взгляд на Rails с другой стороны и комментарии к предыдущей статье: да, RoR масштабируется, но в какой-то момент его использование обходится дорого.
A Few RSpec Helpful Hints — полезные советы, которые помогут упростить написание и чтение RSpec тестов и сэкономить время, которое тратится на исправление ошибок.
How I test Rails applications — если вы начинающий разработчик, эта статья о разных видах тестирования Rails приложений будет отличным гайдом. Автор делится лучшими практиками в тестировании, к которым он пришел за четыре года работы с RoR.
How to avoid inheritance in Ruby? — в статье описываются три варианта структурирования кода — inheritance, mixins и composition — узнайте, какой из них лучше подходит для вашего проекта.
Lint your Ruby code with Overcommit and static analysis tools — статические анализаторы кода помогают оптимизировать производительность и избегать проблем с безопасностью. Узнавайте в туториале, как с помощью git hooks контролировать качество кода для Ruby, RoR и Chef.
Implementing inheritance with params: CreateProducts < ActiveRecord::Migration[5.0] — из туториала вы узнаете, как выполнять наследование с параметрами и научитесь парочке интересных трюков в Ruby.
Fast CSV Report Generation with Postgres in Rails — альтернативные решения, как быстро сгенерировать пользовательские отчеты в формат CSV с помощью Postgres.
View Objects — The Way to Deal with Messy Rails Views — практические рекомендации почему стоит использовать подход View Objects.
Ruby concurrency: in praise of condition variables — статья из серии concurrency в Ruby, в статье рассказывается о проблемах consumer-producer и о том, как их изящно решать с помощью condition variables.
Lessons Learned Integrating Rust with Ruby — слайды презентации Daniel P. Clark на митапе Rust DC, как лучше интегрировать Rust в Ruby.
Серия статей, как используя Vue.js frontend и Rails API в едином репозитории создать MVP приложение для книжного магазина:
- Rails 5.1 API with Vue.js frontend, part 0: stack choices — введение в серию, где объясняется выбор технологий для приложения.
- Rails 5.1 API with Vue.js frontend, part 1: Setting up a Rails API app — установка Rails приложения и настройка Rails API.
- Rails 5.1 API with Vue.js frontend, part 2: Modeling reality — моделирование структуры приложения.
- Rails 5.1 API with Vue.js frontend, part 3: API versioning — управление версиями API.
- Rails 5.1 API with Vue.js frontend, part 4: Authentication and authorization — настройка аутентификации и авторизации.
The battle for auditing and versioning in Rails — Audited vs Paper Trail — гемы Audited и Trail регистрируют все изменения в моделях Rails. Решить, какой гем подойдет лучше для решения ваших задач поможет сравнение с примерами их использования.
A Few RSpec Helpful Hints — пару полезных советов которые помогут вам писать более читабельные и поддерживаемые RSpec тесты.
When distributed locks might be helpful in Ruby on Rails application — автор описывает в статье, как определить, может ли ваше Ruby on Rails приложение столкнуться с проблемой параллелизма, и как ее решить с помощью distributed locks.
Preventing security issues in Ruby on Rails — чеклист по потенциальным проблемам безопасности RoR и как их предотвратить.
Realtime with React and Rails — на примере создания приложения карты реального времени, которое позволяет транслировать ваше местоположение, в туториале предлагается освоить, как работает Action Cable, и как использовать WebSockets для внедрения функционала реального времени в приложение Rails.
Real World Rails Background Jobs — Rails приложения могут быть созданы так, что они выполняют большую часть работы в фоновых заданиях. Предлагаем ознакомиться со списком разнообразных примеров фоновых заданий из реальных приложений для анализа и изучения.
Is it always a good idea to split long methods into smaller ones? An experiment — эксперимент по разбивке длинных методов на части для того, чтобы повысить читаемость кода. Автор предлагает три способа, как это можно сделать лучше.
Streaming Data with Ruby Enumerators — потоковая передача позволяет эффективно обрабатывать большое количество данных. Но по сравнению с Node.js Stream API, где потоки могут быть легко скомпонованы, работа с потоковыми данными в Ruby с использованием блоков неудобна. В статье объединяются идеи из Node.js Streams с Ruby enumerables для создания композиционных потоков в Ruby, чтобы масштабировать обработку веб-канала до впечатляющих темпов.
В июле анонс David Heinemeier Hansson (DHH) о новой функции для Rails 5.2 мало кого оставил равнодушным. Active Storage упрощает загрузку и привязку файлов в облачных сервисах, таких как Amazon S3 или Google Cloud Storage, и прикрепляет эти файлы к Active Records. Он также предоставляет дисковый сервис для тестирования или локального развертывания, но основное внимание уделяется облачному хранилищу. Хотя еще рано делать выводы, первые отзывы уже есть:
- Upcoming built-in Upload Solution for Rails 5.2 (ActiveStorage) — общее впечатление об использовании ActiveStorage.
- Introduction to Active Storage — короткий туториал, как настроить Active Storage.
How I Reduced my DB Server Load by 80% — решение и рекомендации, как улучшить скорость загрузки сервера базы данных.
What skills should a junior Ruby on Rails developer have? — хотите стать достойным RoR разработчиком, или вы ищете подходящего программиста в свою команду? Проверьте чеклист навыков, которые следует иметь начинающему специалисту, чтобы не только создавать программное обеспечение, но и быть важной частью команды, оказывая влияние на продукт, который вы создаете.
Tips to improve speed of your test suite — в статье вы найдете лайвхаки, как улучшить скорость автотестов, чтобы в дальнейшем выиграть время при разработке.
Making iOS & Android apps with Rails & Turbolinks — базовый гайд, как с использованием Ruby on Rails и Turbolinks создать кроссплатформенное приложение под iOS и Android.
Scope the Monkey: Refinements in Ruby — советы, как уменьшить количество манки патчей с помощью Ruby refinements.
Rails on Docker: Getting Started with Docker and Ruby on Rails — Docker — это открытая платформа для разработки, доставки и эксплуатации приложений. В этом туториале вы найдете практические советы, как подготовить базовое приложение Rails для использования в контейнере Docker.
API v2 Architecture and Hanami — кейс, как сделать трансфер новой версии API с Rails на Hanami.
Rails has passed 100 million downloads on RubyGems — чудесная новость для поклонников RoR: количество загрузок Rails на RubyGems уже превышает количество в 100 миллионов.
Shopify @ 80,000 requests per second on Rails — все еще есть сомнения на счет масштабируемости RoR? David Heinemeier Hansson (DHH) думает иначе.
Послушать
Продолжение пятого сезона на канале RWpod. Подборка подкастов за июль:
- 26 выпуск 05 сезона. Rails 5.1.2, Unicorn Unix Magic Tricks, Small Is Big, Browser module loading, React Native UI Kitten и прочее
- 27 выпуск 05 сезона. Upload Solution for Rails 5.2 (ActiveStorage), Real World Rails Background Jobs, Gatsby, Rebass и прочее
- 28 выпуск 05 сезона. Is Ruby Too Slow For Web-Scale?, Redis 4.0 GA, NodeJS: Constant HashTable Seeds Vulnerability и прочее
- 29 выпуск 05 сезона. Monitor and Debug Bottlenecks in Sidekiq, Enclose.IO, RenderReact, Popmotion, GPU.js и прочее
The Bike Shed — канал, где ведущие и их гости обсуждают свой опыт разработки и все, что привлекает их внимание касательно мира Ruby, Rails и JavaScript. В июле обсуждения затрагивают тестирование, сообщества разработчиков, уроки, извлеченные из прошлых проектов, и выступления на конференциях:
- The Bike Shed #117: S.A.L.T. (Justin Searls)
- The Bike Shed #118: Nonsense In, Nonsense Out
- The Bike Shed #119: Questions Are For the Weak (Caleb Thompson & Matt Mongeau)
MRuby and Language Security with Daniel Bovensiepen — интервью Daniel Bovensiepen — основного разработчика MRuby. Daniel рассказывает о Shopify и MRuby — упрощенной версии языка Ruby.
Мир Ruby/Ruby on Rails полон удивительных и талантливых разработчиков. Благодаря подкастам Ruby Rogue — My Ruby Story мы имеем возможность познакомиться с ними поближе:
- Ruby Rogues: My Ruby Story #010 — Dave Kimura — поклонникам популярного Ruby on Rails скринкаста и блога Drifting Ruby будет интересно узнать больше о его создателе Dave Kimura.
- Ruby Rogues: My Ruby Story #011 — Greg Baugues — гость Greg Baugues, уже ранее выступал в подкастах Ruby Rogues. В этом выпуске Greg рассказывает свою историю знакомства с языком Ruby и опыте работы в компании Twilio.
- Ruby Rogues: My Ruby Story #012 — Simon Moro — в этом эпизоде гость Simon Moro расскажет о самостоятельном изучении Ruby и о своем предпринимательском опыте.
Подкасты Ruby Rogue за июль, касающиеся программирования и сообщества и Ruby:
- Ruby Rogues #317: Computer Science at University and the Future of Programming with Dave Thomas — интервью с Dave Thomas, автором нескольких книг по программированию. Автор подкаста и гость говорят о курсе компьютерных наук, который Dave ведет в университете, языке Elixir и будущем программирования.
- Ruby Rogues #318: Metaprogramming with Jordan Hudgens — обсуждение метапрограммирования с несколькими экспертами в этой сфере.
- Ruby Rogues #319: Machine Learning with Tyler Renelle — эпизод посвящен машинному обучению, где своим мнением и опытом поделятся несколько участников подкаста — Charles Max Wood, Dave Kimura и Tyler Renelle.
- Ruby Rogues #320: Shrine and File Uploads with Janko Mahronic — гость подкаста Janko Mahronic расскажет о Shrine — инструменте, который предоставляет множество способов загрузки файлов.
Посмотреть
Everything You Need to Know About Ruby Constants — скринкаст с подробным описанием о том, что нужно знать о константах Ruby.
The Ultimate Guide to Ruby Sorting — из этого скринкаста вы узнаете, как использовать методы sort и sort_by для сортировки массивов и хэшей в Ruby разными способами. Также вы узнаете о различиях производительности и способах выполнения алгоритма быстрой сортировки.
Drifting Ruby #89 Creating Custom Ruby on Rails Generators — генераторы Rails помогают упростить и отчасти автоматизировать workflow разработчика. С помощью этого руководства вы изучите, как создавать генераторы и настраивать существующие.
GORUCO 2017 — 24 июня в Нью-Йорке прошла конференция GORUCO, которая объединяет лучшие практики и опыт сообщества Ruby. Предлагаем к просмотру видеозапись с конференции. Также, на канале Confreaks можно просмотреть отдельные выступления спикеров.
Go Rails #198 Debugging Ruby: How to Interpret a Stacktrace — стек-трейс — это список методов, которые были вызваны до момента, когда в приложении произошло исключение. Скринкаст объяснит, как анализировать и понимать Ruby стек-трейс, когда что-то идет не так в вашем приложении.
Codemy School: Rails API — подборка обучающих видео о Rails API от CodemySchool.
Релизы и библиотеки
Новости о релизах и доработках Ruby on Rails в июле — выход Active Storage в Rails 5.2, предотвращение недопустимых PostgreSQL UUIDs, улучшения, исправления ошибок и многое другое:
- This Week in Rails: Active Storage, telling secrets and time travelling!
- New releases, bugfixes and more!
- Rails 5.0.5.rc2 and 5.1.3.rc2 have been released
- New releases, bugfixes and more than 30000 issues/PRs!
RubyInstaller
mruby 1.3.0 released — вышла новая версия MRuby, который является упрощенным вариантом языка Ruby.
Ruby-Compiler — досрочный выход компилятора для Ruby, который позволяет очень быстро скомпилировать любой проект.
Maily — это Rails Engine для управления, тестирования и навигации по всем вашим шаблонам электронной почты вашего приложения.
ActiveStorage — вот так теперь будем хранить файлы в Rails приложениях.
Kbsecret — это библиотека / утилита, которая предоставляет интерфейс управления для KBFS и Keybase.
Genkan — механизм аутентификации для Rails.
Graphql-guard — простая авторизация для graphql-ruby.
Crank-Starter — одностраничное приложение, вдохновленное Kickstarter. Ruby on Rails backend, React / Redux frontend.
Down — утилита для потоковой передачи, гибкой и безопасной загрузки удаленных файлов.
Data-Science-With-Ruby — практическая Data Science с инструментами на основе Ruby.
Книги
Релизы:
The Rails 5 Way (4th Edition) — 27 ноября ожидается выход четвертого издания The Rails 5 Way, которое входит в Addison-Wesley Professional Ruby Series. Предзаказ уже доступен.
Mastering Ruby Closures: A Guide to Blocks, Procs, and Lambdas — 25 декабря выходит первое издание книги Mastering Ruby Closures: A Guide to Blocks, Procs, and Lambdas. Уже можно делать предварительный заказ.
Рекомендации:
Introduction to Programming with Ruby — онлайн версия книги Introduction to Programming with Ruby — пошаговое введение в программирование Ruby от Launch School.
Курсы
Курсы по Ruby/Ruby on Rails от RubyGarage — в начале октября стартуют Ruby/Ruby on Rails курсы от RubyGarage для тех, кто хочет освоить профессию «Web-разработчик». Регистрация на курс открыта. Тестовые задания принимаются до 1 сентября.
События
Rails Girls Rzeszów — митап Rails Girls в этот раз пройдет с 16 по 17 сентября в городе Жешув, Польша. На сайте уже есть расписание. Ивент бесплатный, но не забудьте зарегистрироваться.
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 дайджест #7