Tracのプラグインとかマクロとかを単一プロジェクトに

TracのプラグインはTracHacksにたくさん公開されていますが、
プロジェクトごとにプラグインやマクロをインストールできることはあまり知られていない気がします。
たぶんこんな感じでちょろっと書かれているからでしょうか。
単一プロジェクトにプラグインをインストール

単純に言うとTracのプロジェクトのディレクトリ構成の下にはpluginsやwiki-macrosというディレクトリがあるのですが、基本的にはこちらへコピーするのです。
plugins下にはプラグインの.eggファイル、
wiki-macros下にはマクロを書いた.pyファイルというだけです。

pluginの.eggファイルはPythonのバージョンによって違うのでソースからビルドする方法もメモしておきます。

$ python setup.py bdist_egg

Tracのプロジェクト共有環境はPythonのホームディレクトリ内のshareの下にあります。easy_installでPluginをインストールした場合、こちらにコピーされてます。各プロジェクトではtrac.iniでインストールされたプラグインを使うかどうか、制御しているんですね。

Trac月の英語化するには

ぽちっとなインストーラーなTracは海外にはなさそうなので、
Trac月を英語化することに挑戦してみました。これもメモ。

キーとなったのは、TRAC_LIGNT_INST_DIR/python/Lib/site-packages/tracの中。
この中にTracソースコードが入ってます。
どうもこのソースコードApachemod_pythonから実行されているっぽいのです。
trac.cgiが参照しているtracのソースはこいつを見ていました。

もしかして、

python setup.py install 

すると、Pythonの実行環境のLib/site-packagesにソースコードがインストールされるんやろか。
これでとりあえずTracのアップグレードをするために、手でいじれます。
(まぁ、めんどいから褒められた手じゃないです。)

もう一つ。
TRAC_LIGNT_INST_DIR/python/share/tracの中に、
Tracの各プロジェクトで共通になる設定やテンプレートが
てんこ盛りにインストールされている模様。
この辺もいじってみました。

TracのDBを覗いてみよう。

TracのDBにはSQLite3を使っている。SQLite3自体はC,C++で書かれているらしい。配布元では各環境用のバイナリを用意してくれている。

http://www.sqlite.org/download.html

Windows用のバイナリを落として解凍して驚いた。sqlite3.exeしかない。

ほかはなーんもない。その中にはドキュメントもない。で、実行してみると設定いらずでDBができてしまう。実行はこんな感じ

sqlite3 db.filename

こうするとSQLiteのコンソールが開いてくれる。このお手軽さはサーバーを立てないとならないイメージを持っていた他のDBとは一線を隔してますね。trac.iniにDBの設定があるけれども、一行だもん。

database = sqlite:db/trac.db

Javaの組込みDBであるHSQLDBとかも使ったけれども、いくらJARで配布されているからって、クラスパスを設定したりしなきゃなんなかったもんね。JDBCのドライバ設定も一行っちゃ一行だけんども、
こっだけ簡単にコンソールはなかった気がするよ。SQLite内でのコマンドは".help"で出てくる。

さて、TracのDBですが、中身は案外簡単なのね。Wikiのテーブルなんて一つしか見当たらないよ。この中でバージョン管理もされているなんてできるもんなんだね。おいらだったら絶対へんな風にテーブル分けているだろうね。この割り切りのよさにしびれたよ。

Tracのプロジェクトは結構いろんなところへ持っていける。

基本的にDBもSQLiteを使っているので、特別なことをしていない限りほとんどの環境へそのまま持っていける。

特別なことの例

  • Trac PluginをTrac Projectのpluginsの下ではなく、Tracの環境へ突っ込んでいる。

移植先の環境へ持っていって、

trac-admin <Path> upgrade

とやってあげるとまぁまぁ動いてくれる。