HyperEstraierプラグインTrac0.11版
HyperEstraierプラグインTrac0.11版をCodeReposにUPしました。
ドキュメントはこちら。
ただ、1月ほど前に作ったやつなので、最近は動作確認してない。 うごかなかったらご連絡ください。
GoogleAppEngineでTracは動くのか!?(挫折編)
チャララッチャッチャ。3時間クッキングの時間です。材料は、旬のGoogleAppEngineSDK と Trac0.11rc1 ,Gneshi 0.4.4です。
GoogleAppEngineはアカウントを取得し、SDKでHellowWorldが表示できるところまで下ごしらえをしておいてください。
GoogleAppEngineの使いかたについては、 こちらのブログ をおススメします。すごいねぇ。
下調べ
さて、まず GoogleAppEngineの資料 を取り出しましょう。Python2.5.2が動くけど、いろいろ制限はあるようです。
- DBはGoogleが用意したDatastoreを使え(でも、Python2.5.2ならSQLiteが使えるのかな?)
- PurePythonなコードしか使えません。C拡張を使うのはダメってこと。これはPython Standard Libraryであっても同様。(たとえば、tempfileは不可)
- 基本的に、サーバ内のファイルに書き込みできません。データを蓄えたければ、AppEngineのデータストアを使用してください。
- socket通信は不可。HTTP,HTTPSのみURLFetchサービスを使えばOK
- サブプロセスやスレッドは不可
- リクエストに対する処理があまり長いと、切断されるよ
- signalsのようなシステムコールは使えません
制限を読むと、難しそうですねぇ。
材料を並べる
まず、作業フォルダをつくります。GoogleにUPするさいのアプリケーションIDを名前につけましょうか。
そこに、材料(Trac0.11rc1とGenshi 0.4.4)を並べます。材料は解凍して、作業フォルダからPythonがパスをうまくたどれるようにきれいに並べましょう。以下のようなフォルダ構成になればOKです。
さらに、repos_parentというフォルダを同じフォルダ下に作ります。これは、TracEnvを置く親フォルダです。その下に、TracEnvのフォルダを配置します。TracEnvは事前に作成しておいてください。TracEnvのフォルダをソースと同様に扱うということは、Tracから書き換えできなくなるということですが、その解決方法は後で考えます。
つづけて、app.yamlをおきます。中身はこんな感じ
application: [アプリケーションID] version: 1 runtime: python api_version: 1 handlers: - url: /.* script: trac_gae.py
trac_gae.pyを呼び出す形で書いていますね。trac_gae.pyを作ります。gaeはGoogleAppEngineの略です。ちなみにこのソースは、 ここ を参照しています。
import os os.environ['TRAC_ENV'] = 'repos_parent/[TracEnvのフォルダ名]' import trac.web.main application = trac.web.main.dispatch_request
こんな感じの構成になりましたか?(イメージ中devtracというフォルダがTracEnvのフォルダです)
余談:データアクセスについて
GoogleAppEngineは、ファイルの書き込みを許さず、DBとしてはDatastoreなるものしか使えない。これにより、既存のPythonのWebアプリはそのままではまず動作しない。
ただし、Tracでは0.10以降、さまざまな種類のDBサーバに対応するために、DBアクセス部分をプラグイン化しており、GoogleAppEngineのDatastore用のプラグインを作れば、動くかもしれないと期待できある。動くといいなぁ。
火を通す
では、動かしてみます。
エラーになった。
File "c:\python25\lib\site-packages\Trac-0.11b2-py2.5.egg\trac\__init__.py", l ine 14, in
どうやら、先ほど配置したのと別のTrac(このPCにはもうひとつTracがインストールしてある)を見に行っているようだ。そっちじゃないよ!
うまくわける方法が分からんので、とりあえずPythonインストールフォルダのsite-packagesフォルダを変名する。.bakをつけとこう
さあ、どんどんエラーが出てきた。めげずにがんばろう
ImportError: No module named pkg_resources
この辺は、どんどんモジュールを加えていこう。ちなみに、pkg_resourcesはsetuptoolsに入っている。 ここから ソースをダウンロードしてsetuptoolsフォルダとpkg_resourcesフォルダを作業フォルダにいれる。
File "C:\doc\GoogleAppEngine\irove\pkg_resources.py", line 23, in ImportError: cannot import name utime
さっきも見たな。このエラー。
なぜかsite-packageの方のTracを参照してしまう。site-package内のTracを変名して回避成功。
File "C:\doc\GoogleAppEngine\irove\pkg_resources.py", line 1247, in _get stream = open(path, 'rb') File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_apps erver.py", line 739, in __init__ raise IOError(errno.EACCES, 'file not accessible') IOError: [Errno 13] file not accessible
open(path, 'rb')が使えなさそうだということころで、挫折orz。
まとめ
そんなわけで、今回は大失敗に終わったのだが、まだ希望がないわけではない。
ここ で、setuptoolsをつかう方法が紹介されているのだっ!!Pylonsって何か知らんけど。
もうちょっと勉強して、再チャレンジしよう。
Trac0.12の日本語化作業
Tracの本を書いたtakayamaさんが、CodeReposでTrac0.12での国際化対応(日本語化)をやっていると伺ったので、いっちょかみさせていただくことに。
詳しくはここを参照。
ぱっと見ほとんどが日本語に翻訳されているので、こんなんすぐ終わるんじゃねぇの?と甘く見ていたんですが、そうでもなかったです。ごめんなさい。
Trac側のテンプレートがまだ十分に対応できてないので、翻訳しても反映されないのがあるなど、なかなかに時間がかかりそう。
まあ、そもそもTrac0.12の話なので、のんびりやればいいのかな。 興味のあるかた、いっしょにどうですか?
Trac本
twitterで、Tracの入門本ができたと聞きましたので、びっくりしてご紹介リンク張らせていただきます。
とうとうというか、ついにTrac本がでますね。
本屋の専門書コーナーを眺めて「Tracの本は何故ないんだろう」という日々ともおさらばです。しみじみ。
Windows Live WriterにAtompubのサービス文書を自動取得させる。
Windows Live WriterにAtompubのサービス文書を自動取得させる方法が わからなくて1月以上苦しんでいたんだけど、 やっと自動取得できるようになった。
具体的には、以下のリンクタグをHTMLのHEADタグ配下に埋め込めばよい。1つめのリンクがそれ。
なお、あくまでこれはWindows Live Writerで私が試してうまくいっただけの方法。AtomPubの正式な仕様ではないようだ。
ちなみに2つめのリンクはwlwmanifest.xmlのありかを示すリンク。
<link rel="service" href="[サービス文書のURL]" type="application/atomsvc+xml" /> <link rel="wlwmanifest" href="[wlwmanifest.xmlのURL]" type="application/wlwmanifest+xml" />
ネタ元はこちら
RSDとか調べてえらく遠回りした気がする。AtomPub関連はまだ十分な資料がWebにないなぁ。
あ、そんな中で、たけまるさんのブログは大変参考になりました。もっと早く見つけていればぁ。
あと、AtomPubについて参考になるのは、 こちらのブログで取り上げられている、RFCの日本語訳と、WEB+DB PRESS Vol.41かと。 WEB+DB PRESSはたまたま買っていた。かなり助かった。
PyDevでTracのpluginをつくる。
以前、テスト用ブログに書いていた、PyDevでTracのpluginを開発するをwikiに移動しました。
記事は上記のリンクを参照。
Google App Engineのおかげで、Pythonに追い風が吹いていますねぇ。
もっと 伸びろ♪
このサイトのTracを0.11rc1に
Trac0.11rc1がリリースされたので、 さっそくこのサイトをrc1にしてみた。
さくらインターネットにTracを構築する(Trac0.11b1) にそってTrac0.11b1がインストール済みの状態で、
easy_install Trac==0.11rc1
だけでOK。らくちん。
(もちろん、プラグインが動かなくなっている可能性はあり。ちょっと
ドキドキだったけど、ひととおり動いているみたい)
py-libフォルダにTrac-0.11b1-py2.4.eggが残るので、 それは手で削除(または移動)すること。