Проект модуля #3

Доска объявлений

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

Аналог avito.ru. Сервис, на котором можно размещать объявления и выполнять поиск по существующим. Включает в себя процессы публикации и управлении объявлениями, продвинутый поиск и многое другое.

2-4
недели

Цель

Третий проект – полноценный веб-сайт на базе фреймворка Ruby On Rails. Здесь отрабатываются навыки работы с формами, загрузка файлов, валидация, управление доступами. Для описания процесса используются конечные автоматы.

Мощь фреймворка Ruby On Rails и выразительность Ruby позволяют в сжатые сроки создавать полноценные веб-приложения. Не зря RoR называют фреймворком стартапов.

Ruby On Rails является отличным фреймворком для стартапов и быстрой проверки гипотез. Благодаря концепции "соглашения по конфигурации" программисты могут писать код меньше думая. Большинство вещей за них делает фреймворк и предоставляет удобное дефолтное поведение. Также это позволяет новым разработчикам с легкостью участвовать в проекте.

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

С появлением новых разделов на сайте (личный кабинет, админка) появляется необходимость в разделении прав пользователей и авторизации действий. Гем Pundit позволяет это достичь, создав простую систему авторизации для различных ресурсов. Это позволяет разным ролям дать различные права.

Зачастую с ростом проекта растёт и его сложность. Особенно там, где возникает работа с состоянием или процессом, например, публикация контента. К примеру в блоге в простейшем случае статья может быть или не быть опубликованной. Но при появлении нового состояния, возникает сложность и количество переходов. Статья может создаваться в статусе черновика, далее проходить премодерацию и публиковаться. Из одного состояния например можно перейти (опубликованная статья отправляется в архив), а из другого нет. Если решать такую задачу в лоб, то приходится учитывать все эти состояния и условия. Для упрощения сложности и работы с состояниями используют конечные автоматы. В Ruby On Rails для этого есть гем AASM, который позволяет описать в декларативной форме состояние и переходы.

В конечном счете любое приложение, большое или маленькое, сложное или простое, нужно доставить до конечно пользователя. И хорошо при этом быть уверенным в том, что оно будет рабочим и проверенным. В этом помогают автоматизированные тесты CI на Github Actions и хостинг на Heroku, куда приложение, подключенное к реальной базе, будет выкладываться автоматически по коммиту разработчика.

Описание

Bulletin Board – Сервис-аналогAvito, в котором пользователи могут размещать объявления и откликаться на них и связываться с продавцом. Каждое объявление проходит премодерацию администраторами сервиса. Администраторы могут вернуть объявление на доработку, опубликовать или отправить в архив. main page bulletins view add new bulletin view

Наставники

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

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

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

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

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

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

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

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

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

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

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

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