公式に書いてあったのですが、バージョン絡みで意外と苦労したのでまとめておきます。
Mac + Virtualenvの環境でtracプラグインの開発環境を作成します。
と言っても仮想環境を作って必要なパッケージを入れるぐらいです。
今回の環境
- Trac 0.12
- 1.0が対応してるかは定かではないのですが、多分大丈夫
- Babel
- Genshi==0.6.1
- Mac OS X 10.8
- Python 2.7.5
- homebrewで入れたもの
- virtualenv
- virtualenvwrapper
- 開発環境があると楽です
Virtualenvの用意
virtualenvwrapperまで用意します。easy_install->pipまで入れれば後はpip installで全ててにはいります。
virtualenvwrapperのセットアップは、インストールした後に、.bash_profile(それか.bashrc)へvirtualenvwrapper.shを読み込むスクリプトを書きます。これについてはvirtualenvewrapperの公式サイトにかかれています。
自分の.bash_profileにはどこかのサイトから引っ張ってきた例をそのまま貼って使ってます。多分必要のない内容もあるっぽいです(--no-site-packagesは使わなくてもデフォルトだったと思った)
もう忘れてしまったのですが、多分このへんとかこの辺
# Setting up the VirtualEnv
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
# Centralized location for new virtual environments
export WORKON_HOME=$HOME/.virtualenvs export PIP_VIRTUALENV_BASE=$WORKON_HOME
# virtualenv should use Distribute instead of legacy setuptools
export VIRTUALENV_DISTRIBUTE=true
# pip respect virtuaenv enviroment
export PIP_RESPECT_VIRTUALENV=true
# cache pip-installed packages to avoid re-downloading
export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache
if [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then source /usr/local/bin/virtualenvwrapper.sh else echo "WARNING: Can't find virtualenvwrapper.sh" fi
tracのインストール
virtualenvの環境に入れていきます。virtualenvwrapperのmkvirtualenvで環境を作り、pipでtracを入れます。 Tracはインタアクト株式会社さんのサイトから日本語化されているTrac-jaをダウンロードしインストールします。
まずはTrac 0.12に必要なモジュールを入れます。babel(国際化対応用)とgenshi(必須のテンプレートエンジン)ですが、genshiは0.6までの対応です(最新版は0.7)
pip install genshi==0.6
babelはTracを入れるときに自動的に入るようです。国際化されているTrac-Jaでは必須なので、インストール時の必要パッケージに書かれているようです。
pipはhttpプロトコルもサポートしてますし、zipにされた中からsetup.pyを自動的に探してきてくれる(setuptools対応のsetup.pyでないとだめだけど)ので、指定してインストールできます。
pip install "http://www.i-act.co.jp/project/products/downloads/Trac-0.12.4.ja1.zip"
プラグインの開発の仕方
tracを入れたので、開発環境を作っていきます。
公式サイトでは開発環境の作り方が書かれているのでその通りにやります。
TracDev/DevelopmentEnvironmentSetup – The Trac Project
- trac-adminからプロジェクトを作り
- http://trac.edgewall.org/wiki/TracDev/DevelopmentEnvironmentSetup#CreatingyourtestTracenvironment
- 管理画面へのアクセスをフルオープンにするために匿名ユーザーに権限を与えます
- http://trac.edgewall.org/wiki/TracDev/DevelopmentEnvironmentSetup#Makeanonymoususershavefullaccess
- tracdを開発向けで起動します。
- http://trac.edgewall.org/wiki/TracDev/DevelopmentEnvironmentSetup#Startingtracindevelopmentmode
簡単にまとめるとこうなります。
trac-admin /path/to/trac-prj-env initenv
trac-admin /path/to/trac-prj-env permission add anonymous TRAC_ADMIN
tracd -r --port 8000 /path/to/trac-prj-env
おなじみのhelloworldなプラグインはこちらを参考にします。
公式の説明では、説明している環境が古くて、テンプレートを使わないまでは参考にできますが、テンプレートからは動きません。0.9以降からテンプレートエンジンがGenshiに変わっているため、0.12の環境で公式のチュートリアルでは動きません。(0.9以前はClearSilverというテンプレートエンジンが利用されていました。)
ただ開発環境へのsetupは参考になります。
setup.py developを利用すれば、インストール先の指定ですぐにtrac側に入れれますし、アンインストール出来る(らしいです、知らなかった。。。)ので、おすすめのやり方です。
結び
という訳で、環境を用意して開発のチュートリアルをやりました。 まだプラグインでできることを学んでるところですが、Tracの内部の情報を取得すると言うのは比較的簡単に取れそうで、専用ページもチュートリアルのような方法で問題無さそうです。
もともと、プラグイン作りたいなーと思ってたのが、header_logoが無いとこうやって表示されるのが嫌で、Tracのプロジェクト名のみここで表示できればいいなあと思ってたからですが、何とかなりそう。
HTMLの要素をオーバーライドする標準APIは無さそう?ですが、jsファイルやcssファイルをロードできます。 TracWysiwygPluginは必要なモノを読み込んでjavascriptでWysiwygのツールバーを読み込んでいるようで、似たようなことをすればいいのかな。
これを書いている間に見つけたのですが、ThemeEnginePluginがあるのでそちらを入れても出来るかもしれません。
logoの置き換えプラグインを作ったというネタをshizuoka.pyでLTできればいいなあと思ってますが、行けるかわからないので何も作ってない。。。