<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -21,11 +21,11 @@ class Class
   def abstract
     abstract_class = self
     
-    raise_if_abstract = lambda do
+    raise_if_abstract = lambda do |*args, &amp;block|
       if self == abstract_class
         raise AbstractClassError, &quot;#{self} is an abstract class and cannot be instantiated&quot;
       else
-        super
+        super *args, &amp;block
       end
     end
     </diff>
      <filename>lib/abstraction.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,11 +5,22 @@ $: &lt;&lt; File.join(File.dirname(__FILE__), '..', 'lib')
 require 'abstraction'
 
 describe &quot;#abstract&quot; do
-  class Animal
+  # Similar to ActiveRecord::Base.new
+  class Organism
+    def self.new(&amp;b)
+      o = super
+      yield o if block_given?
+      o
+    end
+  end
+  
+  class Animal &lt; Organism
     abstract
   end
   
-  class Cat &lt; Animal; end
+  class Cat &lt; Animal
+    attr_accessor :fur
+  end
   
   it &quot;makes a class non-instantiable via new&quot; do
     lambda {
@@ -29,6 +40,14 @@ describe &quot;#abstract&quot; do
     }.should_not raise_error(AbstractClassError)
   end
   
+  it &quot;lets subclasses be instantiated via new with a block&quot; do
+    cat = nil
+    lambda {
+      cat = Cat.new { |c| c.fur = :tabby }
+    }.should_not raise_error(AbstractClassError)
+    cat.fur.should == :tabby
+  end
+  
   it &quot;lets subclasses be instantiated via allocate&quot; do
     lambda {
       Cat.new</diff>
      <filename>spec/abstraction_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>92afdd7d6c5cb6d0c110b2216ae1b063a9ee70e1</id>
    </parent>
  </parents>
  <author>
    <name>Peter Jaros</name>
    <email>peeja@dropio.com</email>
  </author>
  <url>http://github.com/Peeja/abstraction/commit/33f989487584b730e3ab07da482dac0d06cba5c5</url>
  <id>33f989487584b730e3ab07da482dac0d06cba5c5</id>
  <committed-date>2009-03-31T13:06:41-07:00</committed-date>
  <authored-date>2009-03-31T13:06:41-07:00</authored-date>
  <message>#abstract lets subclasses be instantiated via new with a block</message>
  <tree>c719ec99380df4ce3e94402acb0319aa7a08ed21</tree>
  <committer>
    <name>Peter Jaros</name>
    <email>peeja@dropio.com</email>
  </committer>
</commit>
