このチュートリアルは、あなたのシステムに Python と virtualenv が既に インストールされて動作する状態になっていることを想定しています。 もしこの環境構築に助けが必要な場合、 Installing Pyramid の章を 参照してください。
チュートリアルの準備をするには次の手順を実行します。 手順はUNIXまたはWindowsを使っているかによって、若干異なります。
virtualenv を使ってワークスペースを作成します:
$ path/to/my/Python-2.6/bin/virtualenv --no-site-packages pyramidtut
pyramidtut ディレクトリに移動します:
$ cd pyramidtut
easy_install を使って Pyramid と直接の依存関係を インストールします:
$ bin/easy_install pyramid
virtualenv を使ってワークスペースを作成します:
c:\> c:\Python26\Scripts\virtualenv --no-site-packages pyramidtut
pyramidtut ディレクトリに移動します:
c:\> cd pyramidtut
easy_install を使って Pyramid と直接の依存関係を インストールします:
c:\pyramidtut> Scripts\easy_install pyramid
次のステップはプロジェクトを作成することです。 Pyramid はサンプル プロジェクトを作成するための様々な骨組み (scaffold) を提供しています。 私たちは scaffold として alchemy を使用します。これは SQLAlchemy と URL dispatch を使用するアプリケーションを 生成します。
以下の説明では、現在の作業ディレクトリが “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 と同じ方法でテストを実行しますが、追加の “カバレッジ” 情報を提供し、そのプロジェクトの行がテストで “カバーされて いる” (もしくはカバーされていない) かを抽出します。
この機能を動かすには、 virtualenv に追加で 2 つのパッケージ nose と coverage をインストールする必要があります。
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.db ファイルができている はずです。このファイルは、単一のテーブルが定義された 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 だけを使用します。