Коллективный блог
Аналог habr.com. Каждый пользователь может создать запись и опубликовать ее в одной из общих категорий. Другие пользователи ставят оценки и комментируют добавленные посты.
Цель
Способность создавать с нуля полноценные сайты, используя современные технологии – то, ради чего приходят на Хекслет. Коллективный блог — это первый проект, который знакомит студентов с экосистемой приложений на фреймворке Ruby On Rails. Он содержит все ключевые аспекты разработки сайтов, в том числе: работа с зависимостями (bundle), работа с базой (ActiveRecord), шаблонизатор (Slim), деплой и др.
Большое внимание в этом проекте уделяется созданию сущностей с помощью ORM и описанию связей между ними (o2m, m2m). Студентам предстоит спроектировать модели и их отображение на базу данных. Благодаря этому появляется возможность повысить уровень абстракции и оперировать не сырыми данными, а связанными наборами объектов с удобным (семантическим) доступом к зависимым сущностям.
Для большего уровня автоматизации, в проекте используется ресурсный роутинг, который позволяет унифицировать и упростить работу с типичными CRUD-операциями. Так вырабатывается правильный взгляд на формирование путей, их связь друг с другом.
CRUD-операции тесно связаны с формами, которые используются для создания и редактирования сущностей. По умолчанию Rails предоставляет ограниченную поддержку форм, из-за чего приходится тратить на них много времени. В проект добавлена библиотека, позволяющая значительно ускорить генерацию форм и вывод ошибок для них.
И даже бэкенд разработка не может существовать без фронтенда. У любого сайта есть стили и хотя бы минимальный JavaScript, а в шаблонах на полную катушку используется HTML. В этом проекте студентам предстоит познакомиться с Bootstrap и использовать его компоненты для визуального оформления.
Профессиональная разработка не обходится без автоматизированного тестирования. Тестирование сайтов сильно отличается от тестирования кода библиотек. Оно, в основном, строится вокруг тестов, имитирующих HTTP-запросы и проверяющих ответы вместе с данными в базе. Подобные тесты позволяют дёшево проверять работоспособность приложения и обеспечивают легкий рефакторинг в будущем. На проекте оттачивается навык написания подобных тестов, который пригодится и в других фреймворках.
Кроме кода сайта, веб-разработка включает в себя важные инфраструктурные элементы, для запуска сайта нужен веб-сервер и установленная база данных. В свою очередь работа по сети опирается на базовое понимание работы протокола TCP и знакомство с понятием ip-адреса и порта. Со всем этим придётся столкнуться в процессе разворачивания локального окружения.
Когда сайт готов, его нужно выложить в публичный доступ или, как говорят программисты: "задеплоить в продакшен". Выкладка готового кода - неотъемлемая часть разработки. Существует множество различных подходов и требований к тому как это делать эффективно. В этом проекте отрабатывается наиболее автоматизированный способ, с помощью сервиса Railway. Это хостинг, работающий по модели PaaS (платформа как сервис), он сам отвечает за инфраструктуру и требует определённого способа организации кода для обеспечения масштабируемости.
Описание
Коллективный блог - Аналог Habr. Каждый пользователь может создать запись и опубликовать ее в одной из общих категорий. Другие пользователи ставят оценки и комментируют добавленные посты.
Наставники



Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.
Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.
Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.
Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».
Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться.
Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.
Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.