Основные требования:
-
Ruby On Rails и Ruby.
-
Умение отличить класс от метакласса, и вообще — умение писать и пользоваться DSL.
-
Умение не изобретать велосипеды, а пользоваться вместо этого плагинами и гемами для решения типовых задач.
-
А часто повторяющиеся — оформлять в виде плагинов и гемов.
-
Умение разворачивать приложения с помощью Capistrano.
-
Умение писать тесты и спеки, и понимание зачем же они все-таки нужны.
-
Умение кастовать на SQL (mySQL/postrgeSQL).
-
И совсем чудно, если вы имели дело с Sinatra, Sequel и прочими альтернативами.
Разминка
Для начала, несколько несложных вопросов. Опишите, как бы вы решили следующие задачи:
-
Пользователь вводит адрес в форме на сайте. Нужно разобрать этот адрес на составные части и записать в базу отдельно дом, улицу, город и так далее. Каким образом вы осуществили бы разбор адреса?
-
Нужно подсчитать шансы игроков в покер на выигрыш в определенной раздаче. Интерфейс ввода раздачи (карты на руках, карты на столе) значения не имеет. Как бы вы реализовали механизм подсчета?
-
В базе хранятся объекты и их порядковые номера (задаются вручную). Требуется массово изменить порядковые номера у нескольких записей минимальным количеством запросов. Как это сделать?
Тестовое задание
Тестовое задание заключается в написании несложного управляющего интерфейса для магазина загогулин.
На сайте магазина загогулин отображаются товары (загогулины), разбитые по категориям. Категории имеют древовидную структуру.
У категории есть название, родитель (другая категория или NULL) и слаг (генерируется автоматически из названия товара).
Товар принадлежит к одной категории, его характеристики перечислены в Excel-файле. Кроме того, у товара есть множество фотографий (неограниченное по количеству). Одна из фотографий — главная, она будет выводится в списке товаров.
Необходимо:
-
Сделать раздел редактирования категорий товаров. Администратор может:
-
Создать категорию.
-
Изменить категорию.
-
Удалить категорию (товары не должны в ней удаляться).
-
Изменить порядок категорий внутри ветки (перетаскиванием, на странице списка).
-
Переподчинить категорию другому родителю (перетаскиванием, как в дереве папок проводника).
-
Сделать раздел редактирования товаров. Администратор может:
-
Создать товар (выбрав соответствующую категорию, и загрузив при этом фотографии).
-
Удалить товар.
-
Изменить товар.
-
Импортировать товары из Excel-файла. В файле могут быть ошибки.
-
Защитить админку паролем (пользователь — один).
-
Запрограммировать навигацию по двум разделам («Товары» и «Категории») в соответствии со стандартными правилами, чтобы всегда было понятно «Где я нахожусь?» и «Куда я могу отсюда пойти?».
-
Магазин загогулин — многоязычный, в админке должна присутствовать возможность выбора текущего языка. Данные в версиях для разных языков полностью независимы (на русской — одни, на английской — другие), база — одна, пароль на админку — один.
Результат тестового задания необходимо прислать нам в виде ссылки на публичный гитхаб-репозиторий.
И обязательно — инструкцию и пояснения.