Pyramid のインストール の手順に従ってください。ただし virtualenv ディレクトリの名前は pyramidtut にしてください。
まだインストールしていなければ SQLite3 とその開発用パッケージの インストール。通常これはシステムのパッケージマネージャーを介して行います。 Debian Linuxシステムでは、以下のようになります:
$ sudo apt-get install libsqlite3-dev
pyramidtut ディレクトリに移動します:
$ cd pyramidtut
pyramidtut ディレクトリに移動します:
c:\> cd pyramidtut
次のステップはプロジェクトを作成することです。このチュートリアルでは scaffold (骨組み) として alchemy を使用します。これは SQLAlchemy と URL 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
nose と coverage をインストールすると、実際にカバレッジテストが 実行できます。
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 を使ってプロジェクトを作成すると、次のことが仮定されます:
Note
Pyramid は任意の永続化ストレージ機構をサポートしています (例えば、オブジェクトデータベースやファイルシステムなど)。 また、URLからコードへのマッピングを行う追加の方法もサポートします (traversal)。 しかし、このチュートリアルの用途には url dispatch と SQLAlchemy だけを使用します。