[ruby-list:46518] Re: Ruby1.8.8devでのsinatra動作について

From: Kazuhiro NISHIYAMA <zn@...>
Date: 2009-11-05 02:09:28 UTC
List: ruby-list #46518
西山和広です。

At Thu, 5 Nov 2009 10:35:37 +0900,
前川 映一 wrote:
> 
> D:/Ruby/lib/ruby/gems/1.8/gems/sinatra-0.9.4/lib/sinatra/base.rb:807:in
> `compile': undefined method `[]' for nil:NilClass (NoMethodError)
>         from D:/Ruby/lib/ruby/gems/1.8/gems/sinatra-0.9.4
> /lib/sinatra/base.rb:799:in `gsub'
>         from D:/Ruby/lib/ruby/gems/1.8/gems/sinatra-0.9.4
> /lib/sinatra/base.rb:799:in `compile'

このあたりの挙動の違いを調べてみたところ、whenでの*による配列の展開が
おかしくなっているように見えます。

% cat a.rb
special_chars = %w{. + ( )}
case '.'
when *special_chars
  p :expected
else
  p :unexpected
end
% ruby1.8 -v a.rb
ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]
:expected
% ruby18 -v a.rb
ruby 1.8.8dev (2009-10-31 revision 25583) [x86_64-linux]
:unexpected
% ruby-trunk -v a.rb
ruby 1.9.2dev (2009-10-29 trunk 25559) [x86_64-linux]
:expected
%

> Ruby1.8.8devは、使わないほうがいいでしょうか?
> あわせて、ご指導いただければ、助かります。

個人的には開発環境で動作確認対象の1つとして使うとか、
リリースされるまで1.8.8devを追いかけ続けるのが問題に
ならない環境とかで使うのならいいのではないかと思います。


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)

In This Thread