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

  • Уровень знакомства с синтаксисом языка 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.

Процедура проведения

  1. Студент скачивает себе шаблон Roda-проекта, доступный по ссылке
  2. Студент обеспечивает запуск шаблона проекта в режиме для разработки.
  3. Преподаватель предоставляет задачу для выполнения.
  4. Студент реализует задачу на основании предоставленного шаблона. Во время реализации студенту разрешено обращаться только к следующим онлайн-ресурсам:
    1. Официальную документацию Ruby: https://ruby-doc.org/
    2. Викиучебник по Ruby: https://ru.wikibooks.org/wiki/Ruby
    3. Официальную документацию по библиотеке Roda: http://roda.jeremyevans.net/index.html
    4. Данный ресурс поддержки процесса обучения по курсу.

    Использование других ресурсов запрещено.

    На реализацию задачи отводится полтора часа.

  5. По завершении времени или по окончании решения задачи студент объясняет детали реализации.