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