RailsのreturningってObject#tapじゃないか!

http://d.hatena.ne.jp/takihiro/20080701/1214919182

  # A Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.
  #
  #   def foo
  #     returning values = [] do
  #       values << 'bar'
  #       values << 'baz'
  #     end
  #   end
  #
  #   foo # => ['bar', 'baz']
  #
  #   def foo
  #     returning [] do |values|
  #       values << 'bar'
  #       values << 'baz'
  #     end
  #   end
  #
  #   foo # => ['bar', 'baz']
  #
  def returning(value)
    yield(value)
    value
  end

returningってもろRuby 1.8.7で使えるようになったObject#tapじゃないか!
Object#tapは説明読むよりもソース読んだほうがはるかにわかりやすい典型例。

tapかわいいよtap - http://rubikitch.com/に移転しました
Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - http://rubikitch.com/に移転しました

String#gsubでエラー?

Ruby1.8.7-p22で ActiveSupport2.0.2 の、 String#camelizeをすると、 Ruby1.8.7だから、 String#gsub() #=&gt; Enumerable::Enumerator になっちゃうので、エラー。 - Ruby学習メモ - Rubyist

String#gsub() #=> Enumerable::Enumeratorになるケースってブロックなしで、引数がひとつの場合では?その場合以前ならエラーになるし。

require 'rubygems'
gem 'activesupport', '= 2.0.2'
require 'active_support'
RUBY_VERSION                    # => "1.8.7"
"hoge_boke".camelize            # => "HogeBoke"