solovyov.net

FirePython - нет print'ам?

· · python, programming, django

Когда я разрабатываю какое-то веб-приложение, то практически не пользуюсь разного рода отладчиками и всякими вспомогательными инструментами: в 90% случаев с головой хватает print variable для того, чтоб понять, в чём проблема. Ну, иногда я всё-таки делаю import pdb; pdb.set_trace(), в особо запутанных случаях.

Но тут буквально вчера мне показали пальцем на очень клёвую штуку - FirePython. Состоит эта штука из двух частей - небольшая либа на питоне и плагин к Firebug‘у. Этот тандем занимается очень полезным делом - показывает всё, что логается в питоновском коде1, в табе файрбага.

Штука невероятно удобная - теперь для разработки постоянно необходимы только два приложения: редактор и браузер, плюс не придётся высматривать вывод принтов в выводе runserver’а. Относительно обычного использования logging тоже хватает плюсов - как минимум не требуется следить за файлами и их путями (на создание которых может и не быть прав), к тому же сразу готов неплохой просмотрщик логов с возможностью фильтрации.

Я сегодня написал к файрпитону две миддлвари - джанговскую и WSGI, так что теперь его использование - вопрос пары движений. ;) Вкратце: надо установить сам плагин, который зависит от Firebug 1.3 (он ещё бета, но я и так использую Firefox 3.1, так что меня это не пугает :P). После этого сделать easy_install firepython. Как вариант: склонировать проект с гитхаба и положить каталог firepython из каталога python в sys.path или директорию проекта.

После этого надо просто включить миддлварь, дописав в MIDDLEWARE_CLASSES путь к ней: firepython.django.FirePythonDjango. Для использования в WSGI-приложениях есть аналогичная миддлварь: firepython.wsgi.FirePythonWSGI, которую можно использовать как и любую другую WSGI-миддлварь, оборачивая вокруг объекта приложения. :)

Использовать это в коде легко:

import logging
logging.debug('what you want to debug today?')

Логично, что вместо дебага можно использовать любой уровень - потом их можно фильтровать в морде FirePython’а.