ZEO 版の Plone で iPython を使ったりデバッグモードで起動したり

以前、Plone の Shell で iPython を使う方法デバッグモードで起動する方法を書いてたけど、どれも Standalone 版でしかできてなくて、ZEO 版の方ではできてなかった。
これができるのとできないのとでは開発の作業効率が全然違ってくるので、なんとかならんもんかと改めて探してみたらうまいことできたのでメモ。

まずは iPython

iPython をインストールして zope 用の profile を設定するまでは前回と同じ。
んで、ZEO 版では iPython を起動する前にまず zeoserver を起動せにゃならんらしい。じゃないと ZODB にアクセスできませんけどって怒られる。

~/Plone-3.1/zeocluster/bin/zeoserver start

んであとはだいたい同じ。

~/Plone-3.1/zeocluster/bin/client1 shell
~/Plone-3.1/Python-2.4/bin/ipython -p zope

client1 じゃなくて client2 でもいける。

つぎはデバッグモード

デバッグモードも iPython のときと同じようにまず zeoserver を起動する必要があるらしい。

~/Plone-3.1/zeocluster/bin/zeoserver start

んでこんな感じ。

~/Plone-3.1/zeocluster/bin/plonectl fg cleints

これは一応 client1 と client2 の両方を利用するようなコマンドらしいけど、実際最初は client1 しか起動してなくて、Ctrl-c で client1 を終了したあとに client2 が起動するような格好になってるっぽい。なので、おそらく clients じゃなくて client1 にしてもやってることは一緒だと思う。こんな風に。

~/Plone-3.1/zeocluster/bin/plonectl fg client1

んで、例によって client1 でもいける。

~/Plone-3.1/zeocluster/bin/client1 fg

ただ、コレ試したときなぜか client2 で fg ってした場合は、リクエスト待ち状態にはなるけどブラウザからアクセスできなかった。いやただポート番号が違うとかそんなことかもしれんのだけど。。

あと、clusterstatus.sh を使うと client や zeoserver の状態を確認できる。こんな感じで。

<moqada@hogi>$ ~/Plone-3.1/zeocluster/bin/clusterstatus.sh
zeoserver: program running; pid=2209
client1: daemon manager not running
client2: daemon manager not running

夢のコラボ思いついた

今まで全然気付いてなかったけど、実は iPython を起動しつつデバッグモードでブラウザから検証って夢の組み合わせができたみたい。
screen で複数ウィンドウ起動したりして、一方で iPython で関数やらなんやらの確認しながらもう片方でデバッグモード起動してブラウザからの反応をみたりとか。
うーーん最高!まじ便利!