kirillsulim / ruby-wiki

Test task for ruby developer position

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ruby wiki

Здесь предстоит продемонстрировать умение программировать на Ruby с помощью Rails. Будет круто если вы выложите задачу на github, и покроете ее тестами на rspec. А это уже COMBO x4!

Собственно задача:

Небольшой сайт, который состоит из текстовых страниц, организованных в иерархию. То есть, одна страница может быть под-страницей другой страницы. На главной странице расположено дерево страниц сайта:

  • страница
    • подстраница
    • подстраница
      • подподстраница
  • страница

Каждая страница описывается следующими полями:

  1. имя страницы - строка, удовлетворяет условию [a-zA-Z0-9_], ДОПУСТИМЫ РУССКИЕ СИМВОЛЫ
  2. название страницы - произвольная строка
  3. текст страницы - произвольный текст, в котором может присутствовать html-разметка.

Адресная схема мини-сайта:

  • [site]name1/name2/name3 - открывается страница с именем name3, которая является под-странице страницы name2, которая является под-страницей страницы name1. На странице виден её текст и заголовок, а также поддерево всех её подстраниц.
  • [site]name1/name2/name3/edit - страница открывается в режиме редактирования - можно редактировать заголовок и текст. После сохранения нужно делать редирект на адрес [site]name1/name2/name3.
  • [site]name1/name2/name3/add - форма добавления подстраницы к текущей странице, можно задать имя, заголовок и текст. После добавления нужно делать редирект на адрес [site]name1/name2/name3/[новое имя].
  • [site]add - форма добавления корневой страницы.

При сохранении или добавлении текст страниц должен подвергаться следующим преобразованиям:

  • **[строка]** => <b>[строка]</b> (выделение жирным)
  • \\[строка]\\ => <i>[строка]</i> (выделение курсивом)
  • ((name1/name2/name3 [строка])) преобразовывать в ссылку на страницу [site]name1/name2/name3: <a href="[site]name1/name2/name3">[строка]</a> Однако, при редактировании страницы пользователь должен править неформатированный текст.

Реализовать это всё нужно на Rails 3.1, Ruby 1.9.2.

Время отдачи любой из страниц вида [site]name1/name2/ не должно превышать 100 ms для теста утилитой ab c параметрами -с 100 -n 10000

Обращать внимание на:

  • архитектуру приложения
  • читаемость кода
  • комментирование кода
  • безопасность кода
  • дизайн не важен,

About

Test task for ruby developer position


Languages

Language:Ruby 76.3%Language:HTML 18.7%Language:CSS 2.0%Language:JavaScript 1.9%Language:CoffeeScript 0.6%Language:SCSS 0.5%