環境:ruby 1.8.4 (2005-12-24) [i386-mswin32]
WEBrick使ってるんですけど、特定のホストで例外が起きます。
調べてみると、ホスト名の認識がまずいようで、
URI::parse('
http://shacho_soft.at.infoseek.co.jp/diablo_calc/calc.html')
上記のホストで、ホスト名にアンダースコアが含まれてるために host ではなくて registry が設定されてしまい
InvalidURIErro例外が発生します。WEBrick的には HTTPStatus::BadRequest です。
uri/common.rb の↓の部分でアンダースコアが含まれてないから、上手くいかないんだと思うんですけど
DOMLABEL = "(?:[#{ALNUM}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
TOPLABEL = "(?:[#{ALPHA}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
HOSTNAME = "(?:#{DOMLABEL}\\.)*#{TOPLABEL}\\.?"
こういうのって、きっちりRFCにしたがってるんだと思いますが
どうにかして上手く回避する方法はないでしょうか?
たぶん、アンダースコアを含めれば上手くいくんでしょうけど、
この手の問題って、過去に問題になってる気がするので、賢い方法があったら教えてください
587 :
572:2006/09/05(火) 12:22:00
すみません、Ruby1.9の削除について質問した者です。本日、社の者に問い合
わせたところ、1.8はソースではなくRedHat提供のRPM(バイナリ)パッケージ
からインストールしたということでした。
>>576氏の
>1.8もソースからインストールしていたということだな。
という言葉と矛盾してしまい、少々当惑しております。もしかしたら、他の方
法で1.8をインストールしようとした人がいたのかも知れません。
ということで、追加で質問させていただきたいのですが、
RedHat提供のRPM(バイナリ)パッケージでRuby1.8を再インストールしようと
思っているのですが、
>>576で教えていただいた手順の実行後、RPMのインストー
ルをすればよいのでしょうか?
何度もすみませんが、よろしくお願いします。
>>586 俺もいつも困ってるんだが、なんかうまい方法ないかねえ。
>>586 漏れは、アンダースコアを含んだパターンも解釈するように URL::parse を修正して使ってる。
>>592 あ、ごめん癖でh抜いちゃったけど要はURLエスケープした文字列含んでるとって事。
>>594 URL エスケープしててもいけるよん。試してみた?
話を理解してない奴が一人いるっぽいのはおいといて、
URI::parseの制限をゆるくするオプションかなんかは欲しい。
WEBrickでproxy作ったりするとかなり迷惑する。
どこをどの程度緩くするかって利用のケースによって変わってきそうなので、
オプションで指定といっても難しそうな気はするね。
uri = URI::Parser::new(:host=>host_pattern, :path=>path_pattern, :fragment=>fragment_pattern).parse(url)
みたいにカスタマイズできると良いのかなあ?