04:「debugtoolbar」を使った簡単な開発( 04: Easier Development with debugtoolbar )

「pyramid_debugtoolbar」アドオンを使ったエラー処理とイントロスペクション

背景(Background)

基本を紹介しながら、開発とデバッグの生産性を上げる方法を示します。たとえば、テンプレートのリロードについて説明したところで、「--reload」をアプリケーションリロードの前に示しました。

「pyramid_debugtoolbar」はブラウザでいくつかのツールを利用できる人気のPyramidアドオンです。プロジェクトに追加すると、設定に関するいくつかの点が示されます。

目標(Objectives)

  • 開発中にツールバーをインストールして有効にします。
  • Pyramidのアドオンを説明します。
  • アドオンがアプリケーションにどのように設定されるかを説明します。

手順(Steps)

  1. 最初に前の手順の結果をコピーして、「 pyramid_debugtoolbar 」パッケージをインストールし ます。

    $ cd ..; cp -r ini debugtoolbar; cd debugtoolbar
    $ $VENV/bin/pip install -e .
    $ $VENV/bin/pip install pyramid_debugtoolbar
    
  2. ebugtoolbar/development.iniは以下の設定エントリを取得します pyramid.includes:

    1
    2
    3
    4
    5
    6
    7
    8
    [app:main]
    use = egg:tutorial
    pyramid.includes =
        pyramid_debugtoolbar
    
    [server:main]
    use = egg:waitress#main
    listen = localhost:6543
    
  3. WSGIアプリケーションを以下のように実行します:

    $ $VENV/bin/pserve development.ini --reload
    
  4. ブラウザで http://localhost:6543/ を開きます。右側の便利なツールバーを参照してください。

分析(Analysis)

「pyramid_debugtoolbar」は本格的なPythonパッケージで、数千もの他のPythonパッケージと同様にPyPIで利用できます。「pyramid_debugtoolbar」は通常のPythonパッケージの同様のインストールコマンドを使用して、仮想環境にパッケージをインストールします。

「pyramid_debugtoolbar」はPythonパッケージもあるPyramidアドオンでWebアプリケーションにそのアドオンの設定を含める必要があることを意味しています。これを行うには「tutorial/__init__.py」の「config.includ」使用して設定する必要があります。Pyramidは「development.ini」に「pyramid.includes」を使用するアドオン構成もサポートしています。これを使用して「debugtoolbar」の設定を読み込みます。

ブラウザの右側に魅力的なボタンが表示されます。ボタンをクリックすると新しいブラウザタブでデバッグ情報にアクセスできます。さらにWebアプリケーションでエラーが発生した場合は、画面に素晴らしいトレースバックが表示されます。このツールバーを無効にする場合は、コードを変更する必要はありません。関連する「.ini」設定ファイルから「pyramid.includes」で削除できます(設定ファイルが便利な理由が示されています)。

ツールバーは自分自身を表示するために、アプリの終了タグ「</body>」」の直前に少量のHTML/CSSを挿入することに注意してください。あなたが他に説明できないクライアントサイドの不思議さを体験し始めたら、 一時的に「pyramid.includes」の行をコメントアウトすることで「pyramid_debugtoolbar」を止められます。

参考

pyramid_debugtoolbar も参照してください。

エクストラクレジット(Extra credit)

  1. なぜ「pyramid_debugtoolbar」を「debugtoolbar/setup.py」の依存関係のリスト「install_requires」に 追加しないのですか?

  2. アプリケーションにバグを導入してください。変更は:

    def hello_world(request):
        return Response('<body><h1>Hello World!</h1></body>')
    

    から:

    def hello_world(request):
        return xResponse('<body><h1>Hello World!</h1></body>')
    

    保存して、http://localhost:654/ に再度アクセスしてください。素晴らしいトレースバック表示に注目してください。一番下の行で、右の 「screen」アイコンをクリックし、「request」変数と「Response」変数を入力してみてください。それ以外に何が見つかりますか?