Лабораторая работа №2
В качестве лабораторной работы необходимо решить задачу из пункта 2.2 задачника. Номер задачи - это номер задачи для лабораторной работы №1 плюс 1. Т.е. если у вас была задача №2.2.5 для первой лабораторной, то для второй лабораторной возьмите задачу №2.2.6.
Если вы не получили номер первой лабораторной работы у преподавателя, то обратитесь к нему на занятии для получения задачи для второй лабораторной.
Срок сдачи лабораторной работы - 6 декабря 2018 года.
Требования к знаниям учащихся
- Уровень знакомства с синтаксисом языка Ruby
- Запуск приложения
- Переменные, методы
- Работа контейнерами, итераторами, нумераторами
- Описание собственных классов
- Наследование классов
- Использование модулей и примесей
- Знание деталей работы чисел
- Знание деталей вызова методов и указания аргументов
- Использование методов чисел и промежутков.
- Использование методов классов строк и регулярных выражений.
- Уровень знакомства с экосистемой Ruby
- Установка, удаление зависимостей с помощью
gem
- Управление зависимостями с помощью Bundler
- Проверка качества исходного кода с помощью Rubocop
- Установка, удаление зависимостей с помощью
- Уровень знакомства со средствами тестирования обычных приложений
- Настройка окружения для модульного тестирования с помощью RSpec
- Написание модульных тестов в стиле спецификаций с использованием RSpec
- Использование rspec-mocks для изоляции тестируемого объекта в рамках теста
- Оценивать степень покрытия исходного кода с помощью инструмента SimpleCov.
Требования к выполнению задания
- Приложение должно реализовать все требования, указанные в задании. Однако, к защите допускаются приложения, реализующие только часть задач.
- Исходный код приложения должен быть проверен с помощью приложения Rubocop с настройками по-умолчанию или с конфигурацией, предложенной на соответствующем занятии. Для каждого нарушения, которое находит Rubocop, должно быть объяснение почему оно не было исправлено. Допускаются аргументы с точки зрения архитектуры приложения, другого рода аргументы не принимаются.
- Все зависимости приложения должны управляться с помощью Bundler, установка зависимостей с помощью
gem
запрещена. Исключением является джемbundler
. - Для разрабатываемого приложения должны быть создан отдельный каталог.
- В корне каталога должны располагаться конфигурационные файлы:
Gemfile
,Gemfile.lock
. - В корне каталога приложения должны находится каталоги
bin
,lib
, в которых должен находиться исходный код приложения. В каталогеbin
находится исполняемый файл, в каталогеlib
находится описание всех собственных классов и модулей.
- В корне каталога должны располагаться конфигурационные файлы:
- Весь код приложения должен быть разбит на модули и классы, запрещается использовать файлы с простым набором методов, которые не пренадлежат какому-либо модулю.
- Необходимо выделить отдельные классы, описывающие предметную область.
- В одном модуле нельзя совмещать логику обработки предметной области и операции ввода-вывода.
- Приложение должно корректно обрабатывать неправильный ввод от пользователя.
- Для приложения необходимо написать модульные тесты, которые будут проверять ключевую логику из предметной области.
- Необходимо написать модульные тесты для логики ввода-вывода.
- Степень покрытия исходного кода должна быть не менее 95%.