Требования к знаниям учащихся

  • Уровень знакомства с синтаксисом языка Ruby:
    • Запуск приложения.
    • Переменные, методы.
    • Работа контейнерами, итераторами, нумераторами.
    • Описание собственных классов.
    • Наследование классов.
    • Использование модулей и примесей.
    • Знание деталей работы чисел.
    • Знание деталей вызова методов и указания их аргументов.
    • Использование методов чисел и промежутков.
    • Использование методов классов строк и регулярных выражений.
  • Уровень знакомства с экосистемой Ruby:
    • Установка, удаление зависимостей с помощью gem.
    • Управление зависимостями с помощью Bundler.
    • Проверка качества исходного кода с помощью Rubocop.
    • Запуск типичных задач разработчика с помощью Rake.
  • Уровень знакомства с разработкой веб-приложений с помощью библиотеки Roda:
    • Обработка запросов GET для получения данных.
    • Использование шаблонов Foundation / Bootstrap для оформления сайта.
    • Обработка запросов POST на редактирование данных.
    • Передача аргументов в контроллер через адресную строку.
    • Умение структурировать сложное приложение.
    • Умение формировать интерфейс взаимодействия в стиле REST.

Требования к выполнению задания

  • Приложение должно реализовать все требования, указанные в задании. Однако, к защите допускаются приложения, реализующие только часть задач.
  • Исходный код приложения должен быть проверен с помощью приложения Rubocop с настройками по-умолчанию или с конфигурацией, предложенной на соответствующем занятии. Для каждого нарушения, которое находит Rubocop, должно быть объяснение почему оно не было исправлено. Допускаются аргументы с точки зрения архитектуры приложения, другого рода аргументы не принимаются.
  • Все зависимости приложения должны управляться с помощью Bundler, установка зависимостей с помощью gem запрещена. Исключением является джем bundler.
  • Для разрабатываемого приложения должны быть создан отдельный каталог.
    • В корне каталога должны располагаться конфигурационные файлы: Gemfile, Gemfile.lock.
    • В корне каталога должен находится конфигурационный файл rackup с помощью которого можно запустить приложение.
    • Исходный код приложения может быть расположен в каталогах helpers, models, lib, routes.
    • В каталоге views должны находиться шаблоны для описания вида.
  • Весь код приложения должен быть разбит на модули и классы, запрещается использовать файлы с простым набором методов, которые не пренадлежат какому-либо модулю.
  • Необходимо выделить отдельные классы, описывающие предметную область.
  • В одном модуле нельзя совмещать логику обработки предметной области и операции ввода-вывода.
  • Для обработки параметров запросов необходимо использовать специализированную библиотеку (dry-schema, dry-validations и т.п.).
  • Для формирования содержимого формы необходимо использовать специализированную библиотеку (forme, simple_form и т.п.).
  • Приложение должно корректно обрабатывать неправильный ввод от пользователя.
  • Приложение должно обладать понятным интерфейсом: показывать помощь по использованию, в случае ошибочных ситуаций сообщать пользователю причину ошибки и способы его устранения.
  • Желательно автоматизировать следующие задачи с помощью системы выполнения задач Rake:
    • Запуск приложения с помощью rerun.
    • Выполнение проверки исходного кода с помощью Rubocop.
  • Запрещено писать код для приложения на языке JavaScript или любом языке, который компилируется в JavaScript.

Задача

В качестве лабораторной работы необходимо решить задачу из задачника.

Рекомендуется также создать тестовый набор данных достаточно большого объёма, более тысячи записей.

ИВТ-21БО

Имя Задача
Арцимовская Вероника Михайловна №19
Врачев Михаил Алексеевич №11
Голубева Ксения Руслановна №3
Гусев Леонид Васильевич №10
Дубровина Анастасия Михайловна №14
Корчагина Дарья Михайловна №3
Кострюков Григорий Алексеевич №4
Крутилов Алексей Андреевич №18
Крышковец Дмитрий Игоревич №1
Кудинкин Илья Андреевич №14
Кузьменко Алексей Павлович №9
Лифанов Валерий Павлович №17
Лобашова Юлия Александровна №9
Морозов Даниил Игоревич №9
Петровский Илья Андреевич №5
Сироджов Мехрофарид Ибодуллоевич №6
Стулова Василина Игоревна №7
Суслов Данила Андреевич №1
Суханов Александр Денисович №19
Сухонин Виктор Васильевич №16
Тихомиров Максим Витальевич №13
Торопов Егор Александрович №14
Шипилова Дарья Романовна №13

ИВТ-22БО

Имя Задача
Барышева Наталья Сергеевна №17
Боброва Полина Ильинична №15
Волков Андрей Михайлович №16
Захаров Даниил Михайлович №20
Касаткин Михаил Александрович №7
Коковин Даниил Евгеньевич №10
Крутов Дмитрий Сергеевич №3
Курицына Мария Евгеньевна №15
Лавров Михаил Андреевич №2
Максимова Мария Сергеевна №18
Обжигалов Максим Сергеевич №8
Орлов Олег Олегович №13
Орлова Диана Сергеевна №2
Рекут Георгий Александрович №18
Фокин Арсений Алексеевич №4
Харитонов Егор Андреевич №6
Шевченко Роман Николаевич №17

ИВТ-23БО

Имя Задача
Бакулин Владилен Максимович №11
Варданян Армен Авагович №11
Власов Евгений Максимович №15
Ганжа Лилиана Александровна №5
Гонобоблев Евгений Дмитриевич №19
Дорофеев Даниил Григорьевич №12
Дрожженикова Алина Сергеевна №10
Калабин Данил Николаевич №7
Кулаков Даниил Сергеевич №4
Медведева Елизавета Андреевна №2
Парамонов Егор Сергеевич №8
Русанов Олег Сергеевич №12
Рыбакова Полина Александровна №8
Степаненко Кирилл Александрович №20
Уваров Максим Евгеньевич №6
Червинский Артём Алексеевич №5
Четвертков Андрей Михайлович №16
Ширкунов Артем Викторович №1
Юркин Роман Юрьевич №12