Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!03.01.2023
Огляд локального емулятору для Firebase
Нарешті повернувся до роботи над Сінтрою, бо до Нового Року просто часу не було.
Відкрию таємницю — до сьогодні в нас не було ніякої локальної копії даних; вся розробка велась безпосередньо “в продакшні”. Це працює краще, ніж воно здається, тому що дані в базі розділені за користувачами, та до того ж немає схеми, яку потрібно було б мігрувати. Як ми почали розробку “в продакшні” до публічного запуску, так і не припиняли. Проте все ж таки можна поламати продукт для всіх, наприклад, поганими налаштуваннями правил безпеки. Це трапилось зі мною минулого тижня — тож вирішив нарешті розібратися з локальною копією.
Виявилось, що у Firebase чудовий локальний емулятор, якщо порівнювати його зі стеком Ruby on Rails + PostgreSQL, то працювати з ним навіть легше. Емулятор підтримує все, що нам потрібно — аутентифікацію; базу Firestore; хмарні функції; виклик функції на події (pub/sub). Звісно ж, всі вони працюють як єдине ціле: наприклад, після реєстрації користувача викликається хмарна функція, яка писатиме в Firestore.
Для використання емулятора достатньо встановити його, а в коді клієнта додати виклики useEmulator
. Емулятор автоматично візьме з проєкту наявні правила безпеки бази та код хмарних функцій. Порівняно з цим оті Rails та docked виглядає анахронічно.
Але ж емулятор ще й має переваги над роботою зі справжнім Firebase. Правила безпеки бази та хмарні функції оновлюються наживу. У емулятора є UI, де можна переглянути зміст бази та перелік користувачів. Всі запити до бази логуються, а якщо їх не дозволяють правила — то в UI емулятора можна побачити, який саме рядок правил, та з якими вхідними параметрами. Так само логуються й виклики функцій. Та хіба треба нагадувати, що емулятор працює без інтернету? Та дозволяє писати повноцінні інтеграційні тести?
Хоч емулятор і не додається до нового проєкту автоматично, тепер не бачу сенсу не налаштувати його в першу чергу. Firebase - чудова платформа.