Повернення до життя 10-річного застосунку на Ruby on Rails

Минулого тижня ми опублікували кейс-стаді, можливо, одного з наших перших проектів: crclup. Crclup — це груповий чат. Ви могли створити групу і спілкуватися з друзями чи колегами. Легко було вести бесіди в реальному часі або безперешкодно підключатися через розсилку, додаючи трохи асинхронності в загальну картину. Для контексту, цей проект був задуманий в той час, коли Slack тільки з'явився.

Виявляється, ми не публікували кейс-стаді crclup з кількох причин. По-перше, у нас немає відгуку на Clutch, а ми хочемо, щоб наші кейс-стаді мали хоча б один. По-друге, з моменту завершення проекту минуло 10 років, і ми не мали жодних фотографій чи чогось, що могли б показати в кейс-стаді, тому без цього він виглядав би неповним. Адже у нас є й інші кейс-стаді, які наші потенційні клієнти можуть прочитати.

Якби не те, що минулого тижня я натрапив на репозиторій проекту, ви б не могли прочитати цей кейс-стаді. Це було як археологічне відкриття, або як поїздка в машину часу. Я не можу порахувати, скільки всього сталося за ці 10 років між одним з наших перших проектів і нашим теперішнім становищем як компанії. Ми змінилися, ми стали іншими людьми з іншими переконаннями. Ми — інша компанія. Нічого не залишилося незмінним, але й усе залишилося таким же певним чином. Ми дуже виросли, ми еволюціонували.

Одне, що ніколи не змінювалося, — це наша любов до Ruby і Ruby on Rails. Це застосунок на Ruby on Rails 4.0, що працює на Ruby 2.0. Ruby 2.0 досяг своєї кінцевої стадії (EOL — end of life) в 2016 році, а Ruby on Rails 4.0 — в 2019 році.

Після цього археологічного відкриття всередині мене запалився маленький вогник: «Я маю запустити цей застосунок, щоб ми могли почати працювати над кейс-стаді». Питання було: як? Зазвичай, це важко — оживити старе програмне забезпечення, оскільки світ програмування розвивається досить швидко. Це означає, що складно локально встановити стару версію Ruby, потім змусити рідні розширення компілюватися з новими залежностями, з якими вони не були спочатку сумісні і т.д. Якщо ви проходили через це, то знаєте, про що я.

Отже, відповідь на це питання для тих, хто часто читає наш блог, очевидна: за допомогою Docker і docker-compose.

Було лише питання часу, щоб повернути застосунок до життя. Dockerизація застосунку на Ruby on Rails на цьому етапі — це тривіальна задача. Все, що треба було зробити, — це вибрати правильні образи для запуску старої версії Ruby та старої версії MySQL. Коли це було налаштовано, з'явилася ще одна маленька служба, яку треба було запустити: faye, система публікації-підписки, яку ми використовували для частини реального часу додатку. Пам’ятайте, що це Ruby on Rails 4.0, і ActionCable ще не існував!

Можливо, ви подумаєте, що цей процес зайняв багато часу, але це зайняло всього близько 30 хвилин. Саме так легко повернути 10-річний застосунок на Ruby on Rails до життя. Це правда, я мав виправити кілька дрібниць і налаштувати деякі інші речі, але це не було кінцем світу.

Перекладено з: Bringing a 10-year-old Ruby on Rails app back to life

Leave a Reply

Your email address will not be published. Required fields are marked *