トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2009-03-05(木) [長年日記]

tDiary: ニコ動プラグインが動いてない?

朝からメンテだったニコ動だが、その前後(前からだったような気がする)でtDiaryのnicovideo.rbプラグインが動作しなくなっていた。

ちょっと調べてみると、$SAFE = 1のとき(また$SAFEか!)に、rubyのバージョンに関わりなく(そう、1.9がらみではない)Insecure Operaionが出るようになっている。

% irb187 -ropen-uri
irb(main):001:0> open 'http://www.nicovideo.jp/api/getthumbinfo/sm2351685'
=> #<StringIO:0x84882dc>
irb(main):002:0> $SAFE = 1
=> 1
irb(main):003:0> open 'http://www.nicovideo.jp/api/getthumbinfo/sm2351685'
SecurityError: Insecure operation - require
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:260:in `require'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:260:in `open_http'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:767:in `buffer_open'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:203:in `block in open_loop'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:201:in `catch'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:201:in `open_loop'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:146:in `open_uri'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:669:in `open'
        from /home/sho/lib/ruby19/1.9.1/open-uri.rb:33:in `open'
        from (irb):3
        from /home/sho/bin/irb19:12:in `<main>'

$SAFE = 1にするとエラーになる。さらにおかしなことに、このままURIを変えると、エラーにならないパターンがあるのだ:

irb(main):006:0> open 'http://www.nicovideo.jp/'
=> #<File:/tmp/open-uri20090305-6639-179hxn2-0>
irb(main):007:0> $SAFE
=> 1

何も変えてないんだからニコ動のせいだと思うけど、わけわからんなぁ。ちょっと時間がないのでメモだけしてまた明日。

追記

その後、もうちょっと追いかけてみたら、www.nicovideo/api/*がext.nicovideo.jp/api/*に301リダイレクトされるようになっていた。301が間に入ると、Insecureになるっぽい。

というわけで、原因追求はあとまわしにして、こんな感じでなおった: パッチ

Tags: tDiary ruby

トップ «前日 最新 翌日» 編集
RSS feed