Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь 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
. Можно со ссылкой на интеграционный тест.Инструкции по выполнению