Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.
На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решен ие.
Для новичков, задача на несколько дней
Clowne — это Ruby gem для гибкого клонирования моделей, поддерживающий несколько ORM адаптеров.
На данный момент ActiveRecord адаптер реализует клонирование следующих ассоциаций: has_one, has_many, has_and_belongs_to_many. В первой версии это было сделано специально, чтобы избежать возможных избыточных клонирований и неверного результата в конечном итоге.
Но бывают ситуации, когда к клонируемой модели добавляют связь belongs_to, и для ее поддержки необходимо переделывать весь стек клонера, что требует много изменений. Проще добавить клонирование лишь этой одной новой связи.
Для покрытия подобного рода кейсов нужно добавить в gem поддерку belongs_to связей (только для ActiveRecord адаптера).
Польза: прокачаться в Ruby, получить опыт работы со сложными Ruby библиотеками.
Советы по реализации
Ключевой точкой изменений будет класс поддерживаемых ассоциаций ActiveRecord. Сама же реализация будет очень похожа на класс HasOne.
Подробную информацию о том, как работает Clowne, смотрите в документации.
Важно
belongs_to.belongs_to приводит к избыточному клонированию (подсказка: обратить вниание на модели Topic, Post, Image).belongs_to. Можно со ссылкой на интеграционный тест.Инструкции по выполнению