2 ヵ月ほど開発してきたとある CMS を今日納品してきました。
ひたすら CGIKit + TapKit で構成されていますが、直前まで CGIKit 本体をいじっていたような気がします。 でも、おかげで CGIKit の内部をそれなりに理解することができました。
さて今回の開発では安定版の CGIKit-1 を使いましたが、今は CGIKit-2 が積極的に開発されているみたいなの、こちらも見てみようと思います。 CGIKit-2 は (ちゃんと) ステートフルなライブラリになっているのが特徴のようですが、CGIKit-1 だと 'HelloWorld.cgi?element_id=MainPage&name=value' みたいな「まだ読める」 URI だったのが、CGIKit-2 では 'HelloWorld.cgi/c/d99ac00221ef70d6/0.2.0' みたいな「ちょっと読めない」URI になるのは個人的にはちょっと微妙かも。
まあ CGIKit-1 でむりやりステート保存するような使い方もできるので、しばらくは両方いろいろ試してみることにします。
先日の rAntenna のエラーと同じように、timeout のブロックの中で例外が出てしまいました (rAntenna の方も、その後同じエラーが何度かありました)。 環境は ruby 1.8.2 (2004-11-11) [i586-linux] です。
execution expired (Timeout::Error) /usr/lib/ruby/1.8/timeout.rb:42:in `rbuf_fill' /usr/lib/ruby/1.8/net/protocol.rb:196:in `timeout' /usr/lib/ruby/1.8/timeout.rb:55:in `timeout' /usr/lib/ruby/1.8/net/protocol.rb:196:in `rbuf_fill' /usr/lib/ruby/1.8/net/protocol.rb:160:in `readuntil' /usr/lib/ruby/1.8/net/protocol.rb:171:in `readline' /usr/lib/ruby/1.8/net/http.rb:1554:in `read_status_line' /usr/lib/ruby/1.8/net/http.rb:1538:in `read_new' /usr/lib/ruby/1.8/net/http.rb:833:in `request' /usr/lib/ruby/1.8/net/http.rb:615:in `get' (plugin/amazon.rb):63:in `get_amazon'
rAntenna も amazon.rb も、
timeout(limit) do begin ... rescue Timeout::Error end
↑こんなコードだけれど、Net::HTTP.get の時は↓こういう使い方でないとダメとか?
begin timeout(limit) { ... } rescue Timeout::Error end
Net::HTTP.getが中で上げてるTimeoutErrorとrescueしてるTimeout::Errorと違うのかも、と思ったのですが、そんなことはなかったですorz
随分前のお話ですが、 <br>timeout は、Net::HTTP の部分で設定するのが <br>妥当だと思います。 <br>今更修正したくないでしょうけど。 <br> <br>