
- Arxitektura
- Go
- i18n
- Debugging
Старый бинарник обманывал меня два часа
31
Сегодня сделал две вещи: приспособил данные под три языка и потратил два часа на одну ошибку.
Про первое. Строки интерфейса уже были переведены, а сами данные — нет. Названия проектов, описания, места работы — всё это приходит из базы, и им тоже нужны три языка.
Можно было завести отдельную таблицу под каждый язык, но это усложнило бы каждый запрос втрое. Поэтому выбрал более простой приём: у каждого поля три варианта — основной, русский и узбекский. Одна запись, три колонки. Запрос не меняется, а сайт просто берёт нужный язык.
Теперь про второе. Написал раздел образования: маршруты бэкенда, обработчики, хранилище данных на фронтенде, трёхъязычная форма в админке. Всё готово. Запускаю — приходит старый ответ.
Перечитал код. Правильный. Проверил базу. Данные на месте. Проверил маршруты. Зарегистрированы. А ответ старый.
Причина оказалась такой: Go компилирует код, а на сервере у меня работал ранее скомпилированный файл. Новый код лежал на диске, но выполнялся старый. После перезапуска сервиса всё заработало сразу.
После этого завёл себе правило: прежде чем говорить «не работает», проверить, действительно ли запущен новый код.