Отдам Gem в добрые руки
Начался февраль 2022 года, а это значит что мы в Evrone уже подготовили для вас самые интересные материалы из мира разработки на Ruby. Сегодня расскажем, как в RubyGems хотят победить проблему с заброшенными пакетами. Еще поговорим про новый механизм подписи gem и о том, насколько круто можно использовать метапрограммирование в Ruby.
Заброшенные Gem’ы
«Всё — жене» — именно такое завещание Карла Тауша вошло в Книгу рекордов Гиннесса, как самое короткое завещание в мире. Увы, как и люди, проекты не всегда вечны. Приоритеты меняются, интерес к дальнейшему развитию угасает. Иногда банально не хватает рук, чтобы реализовать задуманную идею. В какой-то момент такой проект просто становится заброшенным.
С другой стороны, множество людей продолжают использовать такие оставленные пакеты в своих проектах и им важно дальнейшее развитие. Часто можно встретить посты в Twitter или на Github с просьбами о дальнейшей поддержке и доработке. Такие проекты порой отправляются в виртуальное убежище CodeShelter, где могут обрести нового мейнтейнера.
Чтобы сократить количество «abandoned gem» RubyGems.org решили внедрить формальный процесс, ускоряющий поиск текущего владельца пространства имен. Сейчас это можно сделать через запрос в службу технической поддержки. Так что если вы внезапно являетесь обладателем такого или же, наоборот, имеете возможность помочь в работе над таким проектом — все дороги открыты.
Новый механизм подписи RubyGems
Для RubyGems существует механизм подписи пакета. Его основная задача — обеспечение защиты. Подпись должна гарантировать, что gem был создан конкретным разработчиком и безопасен для использования. Тем не менее, существующий механизм громоздкий и неудобный в использовании.
Let’s Encrypt поменял мир, сделав получение и использование TLS-сертификатов простой и удобной процедурой. Такую же миссию планирует совершить новый механизм подписи gem, основанный на тулките sigstore. Несколько дней назад был представлен RFC, в деталях описывающий процесс подписи.
TL;DR — предполагается, что при исполнении gem build дополнительно будет вызываться окно авторизации в sigstore с выбором поставщика удостоверений (например, тот же Github). После разового прохождения авторизации процесс подписания будет выполнен полностью автоматически. Последующие сборки будут также подписаны, уже без необходимости авторизации, с помощью выбранного поставщика.
Возможность подписи будет не только в процессе сборки, но и после её завершения, например, gem signatures --sign GEMNAME. Надеемся, что такой подход станет популярнее существующего и будет активно использоваться разработчиками.
Решение Wordle в Ruby
Хайп по поводу ежедневной игры в слова, Wordle, не утихает. Люди со всего мира с удовольствием решают эту словарную головоломку. Сыграть в неё можно только раз в сутки, что только сильнее подогревает интерес игроков. Kevin Newton, штатный инженер Shopify, опубликовал в своем блоге код на Ruby, позволяющий максимально быстро выиграть.
Ключевой момент здесь — игра не пытается замаскировать словарь (например, за API). Так что определить перебором искомое слово не составляет труда. Код достаточно интересен для обучения, он прекрасно описывает приёмы работы с отдельными словами и вводом/выводом. Ruby поистине уникальный язык, ведь у него самый красивый синтаксис.
Практическое метапрограммирование
Ruby очень динамичен и поэтому у разработчика есть возможность широко использовать метапрограммирование. Если вы никогда не применяли этот приём, то советуем прочитать свежую статью на wasabigeek.com. Автор статьи на примере крошечной библиотеки minitest/mock рассказывает как именно можно применять метапрограммирование.
Разумеется, это очень мощный прием, но не лишённый недостатков. Метапрограммирование может вызвать существенную потерю производительности и ухудшить читаемость кода. Иногда этим можно пожертвовать при решении сложных задач. Если же вам хочется узнать о метапрограммировании на Ruby ещё больше, то советуем потратить 10 минут своего времени и прочитать отличную статью сербского fullstack-разрабочика Nikola Todorovic.
Конкурсы для разработчиков
Ruby Quiz
до 28 февраля 2022
Evrone — это, прежде всего, сильная Ruby-команда. Мы хорошо разбираемся в Ruby и предлагаем вам тоже проверить себя в нашем новом квизе.
Его составляли наши опытные разработчики, так что придётся хорошо подумать. Внутри семь вопросов и несколько вариантов ответов, из которых лишь один правильный.
Среди тех, кто правильно ответит на все вопросы мы разыграем приятные призы: Apple AirPods Pro, Яндекс. Станцию и увлажнитель от Electrolux.
Митапы
Ruby meetup №17
30 марта 2022 19:00
Рады сообщить, что у нас запланирован Ruby Meetup, который пройдёт 30-го марта. Все доклады будут традиционно предзаписаны в студийном качестве 4К, а вести доклад и помогать вам допрашивать спикеров в прямом эфире будет Григорий Петров, Ruby-разработчик и организатор RubyRussia. Детальная информация о мероприятии будет опубликована позже, следите за нашими новостями.
Вакансии
Удаленка / Офис
Evrone
Мы открыты для новых Ruby-разработчиков. Evrone работает удалённо с первого дня, участие в open-source проектах оплачивается, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.
Не забывайте подписываться на наш дайджест, где вы будете регулярно находить полезные обзоры и новости мира разработки, а также добавляйте нашу RSS-ленту в свой любимый RSS-агрегатор, чтобы не пропустить выход новых материалов.