AN HTTPD ゲストブック/コメント集(2005年11月29日22:18)


福田健 fkd@is.seisen-u.ac.jp 2005/12/07 16:36

中田さん、いとさん
ここ数日、四十の手習いでRubyを勉強しながらtDiaryのコードを追いかけていて、お返事が遅れました。さきほど、中田さん、いとさんがご指摘下さったのと同じ箇所にまで行き当たりました。他にも方法がありそうですが、PATH_INFOに置き換えることで正常作動するところまで確認できたことを、とりあえずご報告いたします。お手数をおかけいたしました。こんな機会でもないとRubyの勉強などしないので自分にとって大変良い機会になりました。ありがとうございます。


中田昭雄 nakata@st.rim.or.jp 2005/12/05 20:57

福田さん、いとさん
申し訳ありません、
いとさんが言うように tDiary が 引数ではなく REQUEST_URI から date を取得しているのなら、それは AN HTTPD の問題ですね。
AN HTTPD の REQUEST_URI は Apache と違ってエキストラパス(や引数)を落としてしまうからです。

AN HTTPD で tDiary(のトラックバック)を使う場合は、いとさんが言う通り date を取得するところの REQUEST_URI を PATH_INFO に変える必要があります。
なお、そこを PATH_INFO に変えても、それはそのまま Apache でも使えます。


いと gfh05223@nifty.com 2005/12/04 14:49

福田さん

# Rubyのソースは見てもさっぱりなのですが。。
tdiary.rb の中の
 date = ENV['REQUEST_URI'].scan(%r!/(\d{4})(\d\d)(\d\d)!)[0]
という行を
 date = ENV['PATH_INFO'].scan(%r!/(\d{4})(\d\d)(\d\d)!)[0]
に変更するとどうでしょうか。


中田昭雄 nakata@st.rim.or.jp 2005/12/01 20:55

福田さん、
福田さんの「分析」では、
>tb.rbの引数として"20051129"を"?tag="などを使って渡すのではなく"/"を使って渡します
というのが間違っています。
それは「引数」を渡しているのではなく CGIでいうところの「エキストラパス」なので、「引数」は nil なのが正しい動作です。
http://example.com/tdiary/tb.rb/20051129 という場合は、環境変数 PATH_INFO に "/20051129" がセットされます。
ruby で言えば、cgi = CGI.new で cgi.path_info に "/20051129" が入ります。

もちろん、tb.rb を作った人はこのことはわかっているはずなので、おそらく福田さんの tDiary(かそのプラグイン)の使い方がおかしいのだと思います。


いと gfh05223@nifty.com 2005/11/30 23:01

福田さん

http://example.com/tdiary/tb.rb/20051129
であれば、環境変数 PATH_INFOで "/20051129" が取得できるので
そこから年月日を取り出して使うように tb.rbを書き換えれば
可能ではと思うのですが。


福田健 fkd@is.seisen-u.ac.jp 2005/11/29 22:18

いつもお世話になっております。
この掲示板上の「福田 健 fkd@is.seisen-u.ac.jp 2005/01/31 09:53」に投稿して以来現在まで、AN HTTPD 1.42nでtDiaryを作動させてきました。このたび事情あって、tDiaryでトラックバックのプラグインを導入して使い始めたのですが、以下のような不具合があることに気がつきました。1)トラックバックの送信は正常にできます。2)トラックバックの受信が不正になります。具体的には以下の通りです。
tDiaryのトラックバック受信URLは、たとえば、
 http://example.com/tdiary/tb.rb/20051129
のような形式になります。つまり、tb.rbの引数として"20051129"を"?tag="などを使って渡すのではなく"/"を使って渡します。このトラックバックのURLをAN HTTPに要求しても、AN HTTPからtb.rbには"20051129"という引数が渡されない(nilになる?)ようなのです。その結果、引数を渡されなかったtb.rbは、トラックバックの対象を常に現在時刻のページと仮定してトラックバックを受け付けてしまいます。要するに過去の記事に対してトラックバックができませんし、誤って現在の記事にトラックバックが届いてしまいます。
もしも上記の分析が正しいとすれば、致命的な仕様上の問題に思え、うまい回避策はないようにも思えますが、何かヒントになりそうなものはありますでしょうか。


[追記] 以下にも同じ質問があります(いと)
http://tdiary-users.sourceforge.jp/cgi-bin/wforum/wforum.cgi?mode=allread&no=1607&page=0