鳩舎

レースしない

Ruby 2.0.0 preview1 RSpec Refinements

Ruby 2.0.0 preview1 を試してみる。とりあえずイケてる新機能 Refinements を試す。

module Foo
  module String
    refine String do
      def upcase!
        self.gsub!(/([a-z])/, "\1".upcase)
        return self
      end
    end
  end
end

これの spec を書く

describe Foo::String do
  using Foo::String

  subject { 'test' }

  it '#upcase!' do
    subject.upcase!.should == 'TEST'
  end
end

動いた。

でも

describe Foo::String do
  using Foo::String

  subject { 'test' }

  its(:upcase!) { should == 'TEST' }
end

はダメ。#upcase! なんてない!と怒られてしまう。

このへん、どう実行されるかいまいちわかってないので、誰か教えて欲しい。出来ればパッチ書いて欲しい。