FirePython - нет print'ам?
Когда я разрабатываю какое-то веб-приложение, то практически не пользуюсь разного рода отладчиками и всякими вспомогательными инструментами: в 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'а.
-
Ну не совсем всё, а только то, что логировалось в то время, пока FirePython был хендлером в logging. ↩
Все замечания и вопросы можно отправлять письмами на