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

Генератор форм

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

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

2-4
недели

Цель

Настройка окружения

Первый проект прокачивает работу с экосистемой Ruby. Студенты учатся запускать любые программы, написанные на Ruby. Знакомятся с интерпретатором языка и его возможностями по быстрой отладке и проверке работы небольших кусков кода. Знакомятся с bundler. Утилитой, через которую происходит управление проектами: установка и обновление дополнительных библиотек, публикация пакета и многое другое.

Здесь же идет формирование правильной инженерной культуры. Одно из первых заданий в настройке — это подключение линтера (Rubocop), который автоматически следит за стилем кода и находит потенциальные ошибки. Код, соответствующий стандартам кодирования, гораздо проще в анализе и значительно выше оценивается другими программистами. Это, в том числе, важно при демонстрации проектов на собеседованиях.

Автоматизированные тесты – неотъемлемая часть профессиональной разработки. Генератор форм — удобный и простой проект для написания тестов до кода. Практикуя TDD мы можем тестировать наше приложение до его написания. Тесты помогут эффективно писать, отлаживать и рефакторить код.

Архитектура

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

Разделение внутренней архитектуры формы и представления позволяет подключать новые шаблонизаторы.

Описание

Генератор Форм - библиотека, с помощью которой удобно создавать формы в шаблонах сайтов. Это популярная задача, для решения которой существует множество библиотек, например библиотека встроенная в Rails или популярный gem SimpleForm.

Пример использования:

User = Struct.new(:id, :name, :job)

user = User.new

html = HexletCode.form_for user, url: '/users' do |f|
  f.input :name
  f.input :job, as: :text
  f.submit
end

puts html
# Будет выведено:
# <form action="/users" method="post">
#   <label for="name">Name</label>
#   <input name="name" value="" type="text">
#   <label for="job">Job</label>
#   <textarea cols="20" rows="40" name="job"></textarea>
#   <input type="submit" value="Create">
# </form>

Наставники

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

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

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

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

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

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

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

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

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

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

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

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