Проект #2

Коллективный блог

Разработчик на Ruby on Rails

Аналог habr.com. Каждый пользователь может создать запись и опубликовать ее в одной из общих категорий. Другие пользователи ставят оценки и комментируют добавленные посты.

2-4
недели

Цель

Способность создавать с нуля полноценные сайты, используя современные технологии – то, ради чего приходят на Хекслет. Коллективный блог — это первый проект, который знакомит студентов с экосистемой приложений на фреймворке Ruby On Rails. Он содержит все ключевые аспекты разработки сайтов, в том числе: работа с зависимостями (bundle), работа с базой (ActiveRecord), шаблонизатор (Slim), сборку ассетов (webpack) и деплой (heroku) и др.

Большое внимание в этом проекте уделяется созданию сущностей с помощью ORM и описанию связей между ними (o2m, m2m). Студентам предстоит спроектировать модели и их отображение на базу данных. Благодаря этому появляется возможность повысить уровень абстракции и оперировать не сырыми данными, а связанными наборами объектов с удобным (семантическим) доступом к зависимым сущностям.

Для большего уровня автоматизации, в проекте используется ресурсный роутинг, который позволяет унифицировать и упростить работу с типичными CRUD-операциями. Так вырабатывается правильный взгляд на формирование путей, их связь друг с другом.

CRUD-операции тесно связаны с формами, которые используются для создания и редактирования сущностей. По умолчанию Rails предоставляет ограниченную поддержку форм, из-за чего приходится тратить на них много времени. В проект добавлена библиотека, позволяющая значительно ускорить генерацию форм и вывод ошибок для них.

И даже бэкенд разработка не может существовать без фронтенда. У любого сайта есть стили и хотя бы минимальный JavaScript, а в шаблонах на полную катушку используется HTML. В этом проекте студентам предстоит познакомиться с Bootstrap и использовать его компоненты для визуального оформления. Также здесь понадобится собирать фронтенд с помощью Webpack (встроен в Ruby On Rails).

Профессиональная разработка не обходится без автоматизированного тестирования. Тестирование сайтов сильно отличается от тестирования кода библиотек. Оно, в основном, строится вокруг тестов, имитирующих HTTP-запросы и проверяющих ответы вместе с данными в базе. Подобные тесты позволяют дёшево проверять работоспособность приложения и обеспечивают легкий рефакторинг в будущем. На проекте оттачивается навык написания подобных тестов, который пригодится и в других фреймворках.

Кроме кода сайта, веб-разработка включает в себя важные инфраструктурные элементы, для запуска сайта нужен веб-сервер и установленная база данных. В свою очередь работа по сети опирается на базовое понимание работы протокола TCP и знакомство с понятием ip-адреса и порта. Со всем этим придётся столкнуться в процессе разворачивания локального окружения.

Когда сайт готов, его нужно выложить в публичный доступ или, как говорят программисты: "задеплоить в продакшен". Выкладка готового кода - неотъемлемая часть разработки. Существует множество различных подходов и требований к тому как это делать эффективно. В этом проекте отрабатывается наиболее автоматизированный способ, с помощью сервиса Heroku. Это хостинг, работающий по модели PaaS (платформа как сервис), он сам отвечает за инфраструктуру и требует определённого способа организации кода для обеспечения масштабируемости.

Описание

Коллективный блог - Аналог Habr. Каждый пользователь может создать запись и опубликовать ее в одной из общих категорий. Другие пользователи ставят оценки и комментируют добавленные посты.

Start page New post Post view

Наставники

Аватар наставника Артем Рашев
Артем Рашев
В веб-разработке со студенческой скамьи. Устав быть заложником экосистемы Microsoft, перешел на светлую сторону Ruby. Тимлидил небольшую команду, строил архитектуру системы в криптовалютном стартапе. Много пишет на TypeScript, но Ruby остается главной специализацией
Аватар наставника Артём Кривоножко
Артём Кривоножко
Активист питерского Ruby-сообщества. Работал с Rails-проектами в разных сферах: образование, доставка продуктов, нагрузочное тестирование. Также пишет на PHP, Node.js, Java, Elixir. Любит математику, тервер и статистику. Выступает на конференциях и митапах
Аватар наставника Василиса Тюльберова
Василиса Тюльберова
Более 5 лет в разработке. Стэк – Ruby, чуть меньше JS (React, Angular, Ember). Любит тесты, гибкую разработку, код-ревью и хорошую инженерную культуру. Пришла на Хекслет, чтобы помочь новичкам делать первые шаги в профессии
Аватар наставника Давид Саламау
Давид Саламау
Отличник физико-математических наук, рубист с 6-летним стажем, ведущий разработчик в крупной компании. Считает, что программисту особенно важно развивать коммуникативные навыки. Владеет этим софт-скиллом сам и учит других
Сколько стоят проекты?

Проекты входят в стоимость обучения в любом формате: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

Зачем проходить проекты?

Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.

Кто проверяет проекты?

Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.