Hatena::Grouprubyist

bongoleのRubyを楽しむ日記 このページをアンテナに追加 RSSフィード

Rubyを楽しむ日記

2006-06-05

[]apache1.3 + mod_rewriteのリバースプロキシ環境環境変数を渡す 20:12 apache1.3 + mod_rewriteのリバースプロキシ環境で環境変数を渡す - bongoleのRubyを楽しむ日記 を含むブックマーク

結構時間がたってからの更新の上にrubyと大して関係ないがはまったのでメモ

今、apache1.3 + rails + mongrelという組み合わせでWebアプリを作ってる。

で、ユーザーの認証をapache1.3がやってくれて認証できたかどうかを環境変数で教えてくれたりする。

この時、apache1.3からmongrelにどうやって環境変数を持っていくか考えた。

mod_headersのRequestHeaderが使えそうだったけどapache2.0からだし、mod_rewriteの[E]オプションリバースプロキシ下では効かない。

んで、もうmod_rewriteの%{ENV:hoge}で認証情報とってurlにくっつけちゃえと思ってやったら激しくはまった。

SetEnv USER bongole
RewriteEngine On
RewriteRule (.*) http://localhost:3000/$1?user=%{ENV:USER} [QSA,P]

とやってもSetEnvが効かず、userが空になってしまう。。。。

なんでかなーとずっと悩んでてたどり着いたのが以下のスレッド

"SetEnv + RewriteCond"

要するにmod_rewriteがmod_envより先に読まれちゃってるからSetEnvが効いてないように見えるんだよってことらしい。しかも1.3のモジュールは上から読まれるんじゃなくて下からよまれるから先に読ませたいやつは下にもってこないとダメらしい。

うーーーんんんんんんん。

こんなんで一日も悩んでしまった。。。。心より恥じる。


[][][]GEDCOM Parser 00:04 GEDCOM Parser - bongoleのRubyを楽しむ日記 を含むブックマーク

今日は調子がいいので、さぼっていたRuby Quizの続きを書こう。

3問目。

GEDCOM(GEnealogical Data COMmunication)フォーマットという構造化されたテキストXMLに変換しようという問題。

GEDCOMフォーマットサンプルは下のような感じ

0 @I1@ INDI
1 NAME Jamis Gordon /Buck/
2 SURN Buck
2 GIVN Jamis Gordon
1 SEX M
...

各行は

LEVEL TAG-OR-ID [DATA]

という構成になっていて、LEVELは注目してる行の階層の深さを表している。

TAG-OR-IDはそのままでタグIDが入る。タグとは英大文字3文字から4文字から成りその後に続くデータの型を表す。

IDは@で囲まれた文字列でファイル内でかぶらないユニークな文字列が入り、その後に続くデータがサブツリーの型を表す。

まぁ、毎度のことながら言葉で説明してもわからんのでXMLで上のGEDCOMを変換すると下のような感じになる。

<gedcom>
    <indi id="@I1@">
        <name>
            Jamis Gordon /Buck/
            <surn>Buck</surn>
            <givn>Jamis Gordon</givn>
        </name>
        <sex>M</sex>
        ...
    </indi>
    ...
</gedcom>

まぁ一目瞭然ですな。

ようするにこんな感じになるように変換しろってことです。

了解。把握した。

ちなみに、でかいGEDCOMフォーマットファイルここにあるらしいのでテストするのに使おう。

続く