Требования к знаниям учащихся
- Уровень знакомства с синтаксисом языка 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 |