<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>activesupport/test/core_ext/object_ext_test.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,8 @@
 *2.3.0 [Edge]*
 
+* Object#tap shim for Ruby &lt; 1.8.7. Similar to Object#returning, tap yields self then returns self.  [Jeremy Kemper]
+    array.select { ... }.tap(&amp;:inspect).map { ... }
+
 * TimeWithZone#- gives correct result with wrapped DateTime, and with DateTime argument [Geoff Buesing]
 
 * Updated i18n gem to version 0.1.1 #1635 [Yaroslav Markin]</diff>
      <filename>activesupport/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -40,6 +40,21 @@ class Object
     value
   end
 
+  # Yields &lt;code&gt;x&lt;/code&gt; to the block, and then returns &lt;code&gt;x&lt;/code&gt;.
+  # The primary purpose of this method is to &quot;tap into&quot; a method chain,
+  # in order to perform operations on intermediate results within the chain.
+  #
+  #   (1..10).tap { |x| puts &quot;original: #{x.inspect}&quot; }.to_a.
+  #     tap    { |x| puts &quot;array: #{x.inspect}&quot; }.
+  #     select { |x| x%2 == 0 }.
+  #     tap    { |x| puts &quot;evens: #{x.inspect}&quot; }.
+  #     map    { |x| x*x }.
+  #     tap    { |x| puts &quot;squares: #{x.inspect}&quot; }
+  def tap
+    yield self
+    self
+  end unless Object.respond_to?(:tap)
+
   # An elegant way to factor duplication out of options passed to a series of
   # method calls. Each method called in the block, with the block variable as
   # the receiver, will have its options merged with the default +options+ hash</diff>
      <filename>activesupport/lib/active_support/core_ext/object/misc.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>17da45b789e0a2581eae6e6b2b1ae8d2b98e0f5d</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy Kemper</name>
    <login>jeremy</login>
    <email>jeremy@bitsweat.net</email>
  </author>
  <url>http://github.com/rails/rails/commit/0f9e65b71f9af30dac17689e81f4353e9fcac5b6</url>
  <id>0f9e65b71f9af30dac17689e81f4353e9fcac5b6</id>
  <committed-date>2009-01-07T13:19:48-08:00</committed-date>
  <authored-date>2009-01-07T13:19:48-08:00</authored-date>
  <message>Object#tap for Ruby &lt; 1.8.7</message>
  <tree>60b61c07e519ae2078575ec07ef7a030e4857467</tree>
  <committer>
    <name>Jeremy Kemper</name>
    <login>jeremy</login>
    <email>jeremy@bitsweat.net</email>
  </committer>
</commit>
