rascutでswfobject.jsが404になる

rascutはActionScript絡みのファイルの変更を検出して, 自動コンパイルをしちゃうもの. さらにCometでコンパイル完了をWebブラウザに通知して, 自動ロードまでしちゃうにくいやつです. id:secondlifeさん++

だけどなんか画面が真っ白になるんですよね. Firebugを見るとswfobject.jsがない模様. 同じ症状が出ている人いっぱいみたいだね.

d:id:lifegood:20080928
g:actionscript:id:kusigahama:20080922:1222105950

ちなみにボクの環境は下記のとおり.

うーん, rascutによって起動されるHTTPサーバーがくさい. というコトでhttpd.rbを追ってみると, 31行目の:

if F.file?(@path) && F.readable?(@path)

で真にならない(真のときにステータスコード200となる). 詳しく見るとF.file?(@path)の時点でfalseとなる. てかファイルですらないって!

んで原因はその前の27行目:

@path = env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])

もっと言うと:

F.join(@root, env['PATH_INFO'])

によって, ~js/swfobject.js/と最後にスラッシュが付く. んー, PathInfoが空であろうとjoinしているのが問題なのかなぁ?

というコトで:

@path = env["PATH_INFO"].empty? || env["PATH_INFO"] == '/' ? @root : F.join(@root, env['PATH_INFO'])

とか適当にF.joinを回避してやれば404とはならなくなりました. めでたしめでたし.