インストール

準備

Pyramid のインストール の手順に従ってください。ただし virtualenv ディレクトリの名前は pyramidtut にしてください。

準備 (UNIX)

  1. まだインストールしていなければ SQLite3 とその開発用パッケージの インストール。通常これはシステムのパッケージマネージャーを介して行います。 Debian Linuxシステムでは、以下のようになります:

    $ sudo apt-get install libsqlite3-dev
    
  1. pyramidtut ディレクトリに移動します:

    $ cd pyramidtut
    

準備 (Windows)

  1. pyramidtut ディレクトリに移動します:

    c:\> cd pyramidtut
    

プロジェクトの作成

次のステップはプロジェクトを作成することです。このチュートリアルでは scaffold (骨組み) として alchemy を使用します。これは SQLAlchemyURL dispatch を使用するアプリケーションを 生成します。 Pyramid はサンプルプロジェクトを作成するための様々な scaffold を提供しています。

以下の説明では、現在の作業ディレクトリが “pyramidtut” という名前の “virtualenv” であると仮定しています。

UNIX の場合:

$ bin/pcreate -s alchemy tutorial

Windows の場合:

c:\pyramidtut> Scripts\pcreate -s alchemy tutorial

Note

Windows を使っている場合、 alchemy scaffold はパスにスペースが 含まれている場所には簡単にインストールできないかもしれません。もし startup で問題に遭遇したら、 virtualenv とプロジェクトの両方を パスにスペースが含まれていないディレクトリに置いてみてください。

開発モードでのプロジェクトのインストール

簡単にプロジェクトの開発をするために、 setup.py develop コマンドを 使ってプロジェクトを開発用 egg として作業用スペースに “登録” する必要が あります。これをするために、 プロジェクトの作成 で作成した tutorial ディレクトリに移動します。そして virtualenv の Python インタプリタを使って setup.py develop コマンドを実行します。

UNIX の場合:

$ cd tutorial
$ ../bin/python setup.py develop

Windows の場合:

c:\pyramidtut> cd tutorial
c:\pyramidtut\tutorial> ..\Scripts\python setup.py develop

このコマンドの実行に成功すると、コンソールに次のような出力が行われるでしょう:

Finished processing dependencies for tutorial==0.0

テストの実行

開発モードでインストールした後で、プロジェクトに対するテストを実行する ことができます。

UNIX の場合:

$ ../bin/python setup.py test -q

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\python setup.py test -q

テストの実行に成功すると、次のような出力が見られるはずです:

.
----------------------------------------------------------------------
Ran 1 test in 0.094s

OK

テストカバレッジ情報の抽出

nosetests コマンドを実行してテストカバレッジを見ることができます。 これは setup.py test と同じ方法でテストを実行しますが、追加の “カバレッジ” 情報を提供し、そのプロジェクトの行がテストで “カバーされて いる” (もしくはカバーされていない) かを抽出します。

この機能を動かすには、 nose および coverage パッケージを virtualenv にインストールする必要があります。

UNIX の場合:

$ ../bin/easy_install nose coverage

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\easy_install nose coverage

nosecoverage をインストールすると、実際にカバレッジテストが 実行できます。

UNIX の場合:

$ ../bin/nosetests --cover-package=tutorial --cover-erase --with-coverage

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\nosetests --cover-package=tutorial ^
      --cover-erase --with-coverage

成功すると、次のような出力が見られるでしょう:

.
Name               Stmts   Miss  Cover   Missing
------------------------------------------------
tutorial              11      7    36%   9-15
tutorial.models       17      0   100%
tutorial.scripts       0      0   100%
tutorial.tests        24      0   100%
tutorial.views         6      0   100%
------------------------------------------------
TOTAL                 58      7    88%
----------------------------------------------------------------------
Ran 1 test in 0.459s

OK

私たちのパッケージは 100% のテストカバレッジではないようです。

データベースの初期化

データベースを初期化するために initialize_tutorial_db console script を使用する必要があります。

tutorial ディレクトリ (development.ini のあるディレクトリ) の中 にいることを確認して、次のコマンドをタイプしてください:

UNIX の場合:

$ ../bin/initialize_tutorial_db development.ini

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\initialize_tutorial_db development.ini

コンソールに対して次のような出力が行われるはずです:

2011-11-26 14:42:25,012 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              PRAGMA table_info("models")
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread] ()
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread]
CREATE TABLE models (
      id INTEGER NOT NULL,
      name VARCHAR(255),
      value INTEGER,
      PRIMARY KEY (id),
      UNIQUE (name)
)
2011-11-26 14:42:25,013 INFO  [sqlalchemy.engine.base.Engine][MainThread] ()
2011-11-26 14:42:25,135 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              COMMIT
2011-11-26 14:42:25,137 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              BEGIN (implicit)
2011-11-26 14:42:25,138 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              INSERT INTO models (name, value) VALUES (?, ?)
2011-11-26 14:42:25,139 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              (u'one', 1)
2011-11-26 14:42:25,140 INFO  [sqlalchemy.engine.base.Engine][MainThread]
                              COMMIT

成功です! 現在の作業ディレクトリに tutorial.sqlite ファイルができている はずです。このファイルは、単一のテーブルが定義された SQLite データベース (models) になります。

アプリケーションの起動

アプリケーションを起動します。

UNIX の場合:

$ ../bin/pserve development.ini --reload

Windows の場合:

c:\pyramidtut\tutorial> ..\Scripts\pserve development.ini --reload

成功すると、コンソールに次のような出力が見られるでしょう:

Starting subprocess with file monitor
Starting server in PID 8966.
Starting HTTP server on http://0.0.0.0:6543

これは、サーバーがリクエストを受け付ける準備ができていることを意味します。

この時点で、ウェブブラウザで http://localhost:6543/ を開くと、 生成されたアプリケーションのデフォルトページが表示されるでしょう。

ページの右側に “デバッグツールバー” アイコンがあるのに気が付くと思います。 アイコンの用途について詳しいことは The Debug Toolbar で読むことができます。 それは開発中にアプリケーションに関する情報を取得することができます。

alchemy scaffold が決めてくれること

alchemy scaffold を使ってプロジェクトを作成すると、次のことが仮定されます:

  • データベースアクセスツールとして SQLAlchemy を使用する
  • URLからコードへのマッピング方法に url dispatch を使用する
  • セッションをリクエストスコープにするために ZopeTransactionExtensionpyramid_tm を使用する

Note

Pyramid は任意の永続化ストレージ機構をサポートしています (例えば、オブジェクトデータベースやファイルシステムなど)。 また、URLからコードへのマッピングを行う追加の方法もサポートします (traversal)。 しかし、このチュートリアルの用途には url dispatch と SQLAlchemy だけを使用します。