Trac で .wsgi ファイルを複数設定する場合の留意点 このエントリーをはてなブックマークに追加

小ネタですが…

重要な Note: 複数の .wsgi ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 os.environ['TRAC_ENV'] には Trac environment のパスを 設定しない でください。この方法を使うと、別の Trac environment の設定が Trac にロードされてしまうことがあります。 (以前にロードした Trac environment のパスが使われてしまいます。) この問題は .wsgi ファイルの内容を下記の通り変更することで回避できます:

import os

os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs'

import trac.web.main
def application(environ, start_response):
  environ['trac.env_path'] = '/usr/local/trac/mysite' 
  return trac.web.main.dispatch_request(environ, start_response)


ここで、

os.environ['TRAC_ENV_PARENT_DIR'] = '/path/to/parent-dir'

を使っていた場合、これを回避コードに置き換えるには、 environ の添え字を 'trac.env_parent_dir' としてあげればいいみたいです。

def application(environ, start_response):
        environ['trac.env_parent_dir'] = '/path/to/parent-dir'
        return trac.web.main.dispatch_request(environ, start_response)

弊社の場合、一方を公開のプロジェクト、もう一方を非公開のプロジェクト (SSL 通信限定でパスワード保護) としていたのに、リロード繰り返したら公開の方の URL が非公開の内容を指していたりで機密的にかなりやばいことになっていた (^_^;;; ので、似たようなことをやろうとしている方は厳重に注意が必要です…。

2013 年 3 月 21 日 by 村山 俊之

タグ: ,

コメントをどうぞ