Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Помощь запрашивалАндрей КозинАндрей Козин Андрей Козин

ПомогТимур РамазановТимур Рамазанов Тимур Рамазанов

Бэк: Policy Object Pattern

Для новичков, задача на один-два дня

В GitHub-репозитории tram-policy опубликована документация к gem, реализующему базовый класс для контексто-специфичных валидаторов в Ruby. В описании приводится мотивация, примеры интерфейса и поддерживаемых фич; дан список классов и объектов, составляющих публичный интерфейс. Сейчас репозиторий содержит только документацию без какого-либо кода (помимо тривиальных объявлений).

Задача состоит в том, чтобы полностью разработать gem в соответствии с описанием.

Польза: возможность попрактиковаться в написании gem’ов, реализовать один из базовых паттернов разработки средствами чистого Ruby (попутно сняв «ауру магизма» с валидаторов, как мы привыкли к ним в Rails), познакомиться с классической библиотекой I18n, создать простыми средствами один из базовых компонентов для сложных Rails/PORO приложений.

Решение: Второе и третье места с благодарностью за участие в разработке достаются Анастасии Власовой и Сергею Чечаеву, также предложившим свои решения.

Задача должна быть по силам новичку с базовыми знаниями Ruby и фреймворка RSpec.

Обратите внимание на то, что все необходимые зависимости уже объявлены в спецификации (файл .tram-policy.gemspec) и Gemfile gem’а. Не добавляйте новых зависимостей сверх указанных. Поскольку речь идет о публичной библиотеке, код должен быть хорошо покрыт тестами.