Як ми робили інтерактивний квест для RailsClub, SavePearlHarbor
Ще одна копія хабора
Як ми робили інтерактивний квест для RailsClub
RailsClub – конференція, яку AT Consulting відвідує практично з моменту її заснування. Цього року ми стали її золотим партнером і вирішили придумати для учасників щось цікавіше за розіграш призів і написали інтерактивний квест, що включає 15 завдань. Більшість із них — на знання Ruby та кілька творчих. Досвід вийшов цікавим, бо це був наш перший квест для заходів. За підсумками проведення квесту ми зібрали багато відгуків та питань щодо окремих завдань. У цій статті ми розповімо, як створювали квест, і розберемо відповіді.

Команда складалася з одного front-end, двох back-end розробників та дизайнера.
Що всередині?
Писали проект, звичайно, на Ruby on Rails. На чому ще може бути написана програма RailsClub? Оскільки часу було мало, вирішили зробити все без надмірностей, просто, але при цьому непробивно: стандартна MVC-архітектура Ruby on Rails (руки так і свербіли додати Trailblazer, але швидко стало ясно, що зайві шари абстракції тільки заплутають і не дадуть виграшу в невеликому. проекті), і пачка випробуваних часом гемов. На сервер же став веб-сервер Nginx з SSL-сертифікатом від Let's Encrypt (у 2016-му році запускати будь-який проект без HTTPS просто соромно) і сервер баз даних PostgreSQL — загалом, все, що необхідно застосувати до роботи. Сервером, до речі, стала одна з віртуальних машин, яку ми зазвичай використовуємо для прогону тестів (gitlab-ci-runner'и) інших проектів компанії. Оскільки конференція була у вихідний день, ми вирішили, що потужності все одно простоюють, і використовували її, зупинивши всі зайві процеси.
З деплоєм теж все було просто – цезнайомий кожному «рейковику» Capistrano. Для досить простого проекту нічого навороченішого і не потрібно.
Лінія фронту
Спочатку на фронтненді хотіли використовувати React та redux, однак, зрозумівши суть завдання, ми вирішили, що в квесті не повинно бути динамічного UI, тому зробили все максимально просто. Front-end на Turbolinks, Jquery, jquery-ujs.
При розробці таких завдань потрібно більше часу на саму розробку, щоб врахувати всі нюанси у фронтненді, а саме: перевіряти проект на різних пристроях під різними платформами, доопрацювати валідацію під час відправлення квесту тощо.
![]() | ![]() | ![]() |
![]() |
Правильні відповіді
Квест складався з 15 завдань, прямо чи опосередковано пов'язаних з Ruby. Найскладнішим виявилося питання Array#compact: ми просили реалізувати найкоротшу версію цього методу. Виглядає вона так:
Багато хто потім питав у нас правильну відповідь. Більшість знали варіант a - [nil], але мало хто знав, що p (alias puts) повертає nil, якщо запущений без параметрів, і це можна використовувати в даному контексті.
Найневдалішим, з погляду, виявилося питання: «Що говорив Матц про GC в Ruby?». Щоб правильно відповісти, потрібно було заглянути на українськомовну версію сайту про ruby: «Це корисніше для вашого здоров'я». Але все ж таки дві людини примудрилися відповісти на це питання )
Найпростішими виявились завдання заповнити анкету при реєстрації та написати, якою мовою був натхненний Матц при виборі назви для своєї мови (відповідь – perl).



