Описание проблемы
С недавних пор PyCharm перестал ругаться на форматирование, которые получается при использовании форматёра black и я полностью отказался от встроенного форматера. Сделал всё как описано в этой инструкции. Потом настроил CI, чтобы он не пропускал код не соответствующий формату black. А чтобы плохой код не доходил до CI, настроил precommit hook в git. Всё хорошо и замечательно до тех пор, пока дело не касается миграций. В обычном коде я постоянно жмякую хоткей, который приведёт код в порядок. Исправил строку - жмякнул. Но в автоматически созданных миграциях нет необходимости открывать файл и из-за них комиты не проходили. Сгенерировал миграцию, попытался сделать коммит, переформатировал код, сделал коммит. И эта последовательность действий повторялась снова и снова. Хотелось этого избежать.
Решение
Я работаю в Windows. Естественно, мой код работает в docker'е. Каждый раз запуская контейнер приложения из консоли я монтирую домашнюю папку. В результате, сохраняется история команд bash и django shell_plus между запусками контейнера.
А раз есть домашняя папка, то можно сделать инициализацию псевдонимов (алиасов). Вот содержимое моего файла .bashrc
echo BASHRC
m () { ./manage.py $@; }
m1 () { MDO_DB=LOCAL m makemigrations $@ && black .; }
alias m2='MDO_DB=LOCAL m migrate'
alias mm='m1 && m2'
alias plus='m shell_plus --print-sql'
alias -p
- m1 - создание миграции
- m2 - применение миграций
- mm - создание и применение
Кстати, о переменной MDO_DB. Я могу переключаться между разными БД: локальной, тестовой и даже продом. За это отвечает упомянутая переменная. К проду подключаться могу, но никогда этого не делаю, а вот тестовому серверу подключаюсь часто, когда нужно пройти отладчиком на данных тестовой среды. И чтобы миграция применялась только на локальной базе, используется явное указание MDO_DB=LOCAL
.
После использования псевдонимов мне не нужно отвлекаться на форматирования, т.к. все миграции и остальные файлы проекта полностью отформатированы.
Глоссарий
- Хоткей - горячая клавиша
- Жмякнуть - нажать
- Псевдоним, алиас - alias
- Прод - production-сервер
- Глоссарий - словарик
Top comments (0)