Старый бинарник обманывал меня два часа
  • Arxitektura
  • Go
  • i18n
  • Debugging

Старый бинарник обманывал меня два часа

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