TurboGears2を予習してみる。
以下の内容は、Subversionのtrunkから取得したコードで試しています。
http://svn.turbogears.org/trunk/INSTALL.txt を見ると、PylonsとTurboGearsをそれぞれSuversionのtrunkからとってくるように書いてある。
$ svn co http://pylonshq.com/svn/Pylons/trunk pylons $ svn co http://svn.turbogears.org/trunk tg2 and install TurboGears 2 in development mode:: $ python ./pylons/setup.py develop $ python ./tg2/setup.py develop
でもこのままやるとPasteScriptでVersionConflictしますから。
Pylonsが0.9.6っていうバージョンで入るけど、tg2のcommandが、'Pylons==dev,<0.9.6' こんな指定の仕方。
直接Subversionから入れるとdevになるようなので、そっちの方法で。
$ easy_install http://pylonshq.com/svn/Pylons/trunk pylons
さて、ベースのMVCフレームワークがCherryPyからPylonsに移行することになるらしいTurboGears2.0。
quickstartはPasteScriptのコマンドになります。
$ paster quickstart tutorial
ez_setup がねーぞとエラーになります。orz
まあ、終盤でエラーになるし、プロジェクトディレクトリ内はそれなりなので、気にしないことにします。
とりあえずidentityオプションを有効にしときました。
が、modelsパッケージ内には特にそんなものは生成されていない模様。
paste のテンプレートを除いてもそれらしきテンプレートは見つからないので、まだ実装されていないのでしょう。
さて、フレームワークをまとめあげるメガフレームワークであるところのTurboGearsですが2.0になってどんなフレームワークの選択になったのでしょう。
paster tginfo で依存するモジュール一覧と現在インストールされているバージョンを確認できました。
requiresだけだと以下のようなもの。
* TurboGears2 2.0a1dev-r3239 * SQLAlchemy 0.3.7 * Genshi 0.4.2 * Pylons 0.9.6dev-r2126 * Mako 0.1.8 * nose 0.9.3 * decorator 2.0.1 * simplejson 1.7.1 * FormEncode 0.7.1 * PasteScript 1.3.5 * PasteDeploy 1.3.1 * Paste 1.4 * Beaker 0.7.4 * WebHelpers 0.3.1dev-r2064 * Routes 1.7 * Beaker 0.7.4 * PasteDeploy 1.3.1 * simplejson 1.7.1 * Routes 1.7
うむ。いかにもon Pylons。
SQLAlchemyとGenshiは前評判どおりの内容。
FormEncodeは続投。
Pylonsがベースになったので、CherryPyが脱落。
って、Makoはrequiresなの?
ユニットテストはnoseになっていくのかなぁ
と、いろいろ思いをはせることはできますが、不思議なのはElixirがrequiresじゃない?
template内にはElixirの文字が見えるのだが...
まだ本採用ではないのかな。
じゃあ、動かしてみるか。
$ paster serve development.ini
PylonsもTurboGearsもtrunk版なのが原因なのか、がんがんWarningが出る。
でも、とりあえず動いている。
デフォルトのトップページはTurboGearsを使っている人には、見慣れた画面。
さて、コントロールを追加してみるか。
controllers以下にそれぞれモジュールになっている。
pylonsと同じように、paster controllerでいいのだろうか。
root.pyを覗いてみると、RootControllerはTurboGearsControllerを継承している。
pasterのヘルプには、TurboGears2でコントローラー用のコマンドはないようなのだ。
とりあえず、Pylons的にコントローラーを作ってみると、BaseControllerを継承したものになった。
ところで、TurboGearsControllerって普通のとどう違うんだろう。
WSGIControllerを継承している。
出所はpylonsのcontrollers。
要するに、WSGI spec の__call__を実装したコントローラーのようだ。
BaseControllerもWSGIControllerを継承しているから正しい?
まあ、これはPylonsのまんまでやるってことかなー。
コントローラーはデフォルトのままにしておいて、ディスパッチャに設定してみる。
途中、Elixirインストールしてないせいでエラーになる。
templateに書くなら、requiresに入れてください。orz
この辺でやめとこう。