<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>spec/base/count_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,7 @@
 require 'rubygems'
 require 'rake/gempackagetask'
 
+PKG_NAME = 'activecouch'
 PKG_VERSION = File.read('VERSION').chomp
 PKG_FILES = FileList[
   '[A-Z]*',
@@ -28,4 +29,28 @@ Rake::GemPackageTask.new(spec) do |pkg|
   pkg.need_tar = true
 end
 
+task :lines do
+  lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
+
+  for file_name in FileList[&quot;lib/active_couch/**/*.rb&quot;]
+    next if file_name =~ /vendor/
+    f = File.open(file_name)
+
+    while line = f.gets
+      lines += 1
+      next if line =~ /^\s*$/
+      next if line =~ /^\s*#/
+      codelines += 1
+    end
+    puts &quot;L: #{sprintf(&quot;%4d&quot;, lines)}, LOC #{sprintf(&quot;%4d&quot;, codelines)} | #{file_name}&quot;
+    
+    total_lines     += lines
+    total_codelines += codelines
+    
+    lines, codelines = 0, 0
+  end
+
+  puts &quot;Total: Lines #{total_lines}, LOC #{total_codelines}&quot;
+end
+
 task :default =&gt; [:package]
\ No newline at end of file</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -289,10 +289,25 @@ module ActiveCouch
         case scope
           when :all    then find_every(options)
           when :first  then find_every(options).first
-          else              raise ArgumentError(&quot;find must have the first parameter as either :all or :first&quot;)
+          else              find_one(scope) #raise ArgumentError(&quot;find must have the first parameter as either :all or :first&quot;)
         end
       end
 
+      # Retrieves the count of the number of objects in the CouchDB database, based on the
+      # search parameters given.
+      #
+      # Example:
+      #   class Person &lt; ActiveCouch::Base
+      #     has :name
+      #   end
+      #
+      #   # This returns the count of the number of objects
+      #   people_count = Person.count(:params =&gt; {:name =&gt; &quot;McLovin&quot;})
+      def count(params = {})
+        result_set = find(:all, params)
+        result_set.size
+      end
+
       # Initializes a new subclass of ActiveCouch::Base and saves in the CouchDB database
       # as a new document
       # 
@@ -407,6 +422,15 @@ module ActiveCouch
           instantiate_collection(connection.get(path))
         end
         
+        def find_one(id)
+          path = &quot;/#{database_name}/#{id}&quot;
+          begin
+            instantiate_object(connection.get(path))
+          rescue ResourceNotFound
+            nil
+          end
+        end
+        
         # Generates a query string by using the ActiveCouch convention, which is to
         # have the view defined by pre-pending the attribute to be queried with 'by_'
         # So for example, if the params hash is :name =&gt; 'McLovin',
@@ -430,6 +454,14 @@ module ActiveCouch
           hash = JSON.parse(result)
           hash['rows'].collect { |row| self.new(row['value']) }
         end
+        
+        # Instantiates an ActiveCouch::Base object, based on the result obtained from
+        # the GET URL
+        def instantiate_object(result)
+          puts result
+          hash = JSON.parse(result)
+          self.new(hash)
+        end
     end # End class methods
     
     private</diff>
      <filename>lib/active_couch/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,7 @@ describe &quot;ActiveCouch::Base #after_delete method&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called after_delete&quot; do
@@ -55,6 +56,7 @@ describe &quot;ActiveCouch::Base #after_delete method with a block as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should execute the block as a param to after_delete&quot; do
@@ -92,6 +94,7 @@ describe &quot;ActiveCouch::Base #after_save method with an Object (which implements
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should call before_save in the object passed as a param to after_delete&quot; do</diff>
      <filename>spec/base/after_delete_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,7 @@ describe &quot;ActiveCouch::Base #after_save method&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called after_save&quot; do
@@ -54,6 +55,7 @@ describe &quot;ActiveCouch::Base #after_save method with a block as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should execute the block as a param to after_save&quot; do
@@ -87,6 +89,7 @@ describe &quot;ActiveCouch::Base #after_save method with an Object (which implements
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should call before_save in the object passed as a param to after_save&quot; do</diff>
      <filename>spec/base/after_save_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,7 @@ describe &quot;ActiveCouch::Base #before_delete method with a Symbol as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called before_save&quot; do
@@ -55,6 +56,7 @@ describe &quot;ActiveCouch::Base #before_save method with a block as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should execute the block as a param to before_save&quot; do
@@ -91,6 +93,7 @@ describe &quot;ActiveCouch::Base #before_save method with an Object (which implements
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should call before_save in the object passed as a param to before_delete&quot; do</diff>
      <filename>spec/base/before_delete_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,7 @@ describe &quot;ActiveCouch::Base #before_save method with a Symbol as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called before_save&quot; do
@@ -52,6 +53,7 @@ describe &quot;ActiveCouch::Base #before_save method with a block as argument&quot; do
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should execute the block as a param to before_save&quot; do
@@ -85,6 +87,7 @@ describe &quot;ActiveCouch::Base #before_save method with an Object (which implements
   after(:each) do
     # Migration needed for this spec    
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should call before_save in the object passed as a param to before_save&quot; do</diff>
      <filename>spec/base/before_save_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ describe &quot;ActiveCouch::Base #create method&quot; do
   
   after(:each) do
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called create&quot; do</diff>
      <filename>spec/base/create_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -55,6 +55,11 @@ describe &quot;A subclass of ActiveCouch::Base that's a subclass of an ActiveCouch::B
     end
   end
 
+  after(:all) do
+    Object.send(:remove_const, :Parent)
+    Object.send(:remove_const, :Child)
+  end
+
   it &quot;should have a base_class of the parent&quot; do
     Child.base_class.should == Parent
   end</diff>
      <filename>spec/base/database_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,6 +12,7 @@ describe &quot;ActiveCouch::Base #delete instance-level method&quot; do
   
   after(:each) do
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have an instance method called delete&quot; do
@@ -51,6 +52,7 @@ describe &quot;ActiveCouch::Base #delete class-level method&quot; do
 
   after(:each) do
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should have a class method called delete&quot; do</diff>
      <filename>spec/base/delete_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,7 @@ describe &quot;ActiveCouch::Base #find method with just simple attributes&quot; do
   after(:each) do
     # Delete the database last
     ActiveCouch::Migrator.delete_database('http://localhost:5984', 'people')
+    Object.send(:remove_const, :Person)
   end
 
   it &quot;should respond to the find method&quot; do
@@ -64,6 +65,7 @@ describe &quot;ActiveCouch::Base #find method with just simple attributes&quot; do
   end
 end
 
+
 describe &quot;ActiveCouch::Base #find method with multiple documents in the CouchDB database&quot; do
   before(:each) do
     class Person &lt; ActiveCouch::Base
@@ -90,7 +92,8 @@ describe &quot;ActiveCouch::Base #find method with multiple documents in the CouchDB
   
   after(:each) do
     # Delete the database last
-    ActiveCouch::Migrator.delete_database('http://localhost:5984', 'people')    
+    ActiveCouch::Migrator.delete_database('http://localhost:5984', 'people')
+    Object.send(:remove_const, :Person)
   end
   
   it &quot;should find all objects in the database when find method is sent the param :all&quot; do
@@ -147,6 +150,8 @@ describe &quot;ActiveCouch::Base #find method with an object which has associations&quot;
   after(:each) do
     # Create the database first
     ActiveCouch::Migrator.delete_database('http://localhost:5984', 'blogs')
+    Object.send(:remove_const, :Blog)
+    Object.send(:remove_const, :Comment)
   end
   
   it &quot;should be able to retrieve the simple attributes&quot; do
@@ -162,4 +167,72 @@ describe &quot;ActiveCouch::Base #find method with an object which has associations&quot;
     (blog.comments.inspect =~ /ya rly!/).should_not == nil
   end
   
+end
+
+describe &quot;ActiveCouch::Base #find method with no params passed&quot; do
+  before(:each) do
+    class Person &lt; ActiveCouch::Base
+      site 'http://localhost:5984/'
+        has :name
+    end
+    # Define the migration
+    class ByName &lt; ActiveCouch::Migration
+      define :for_db =&gt; 'people' do
+        with_key 'name'
+      end
+    end
+    # Create the database first
+    ActiveCouch::Migrator.create_database('http://localhost:5984', 'people')
+    # Create a view
+    ActiveCouch::Migrator.migrate('http://localhost:5984', ByName)
+    # Save two objects
+    Person.create(:name =&gt; 'McLovin')
+    Person.create(:name =&gt; 'Seth')
+  end
+
+  after(:each) do
+    # Delete the database last
+    ActiveCouch::Migrator.delete_database('http://localhost:5984', 'people')
+    Object.send(:remove_const, :Person)
+  end
+  
+  it &quot;should return all documents if passed :all, with no params specified&quot;
+end
+
+
+describe &quot;ActiveCouch::Base #find method with an ID passed&quot; do
+  before(:each) do
+    class Person &lt; ActiveCouch::Base
+      site 'http://localhost:5984/'
+        has :name
+    end
+    # Define the migration
+    class ByName &lt; ActiveCouch::Migration
+      define :for_db =&gt; 'people' do
+        with_key 'name'
+      end
+    end
+    # Create the database first
+    ActiveCouch::Migrator.create_database('http://localhost:5984', 'people')
+    # Create a view
+    ActiveCouch::Migrator.migrate('http://localhost:5984', ByName)
+    # Save two objects
+    Person.create(:name =&gt; 'McLovin', :id =&gt; '123')
+  end
+
+  after(:each) do
+    # Delete the database last
+    ActiveCouch::Migrator.delete_database('http://localhost:5984', 'people')
+    Object.send(:remove_const, :Person)
+  end
+  
+  it &quot;should return an ActiveCouch::Base object if the ID exists&quot; do
+    person = Person.find('123')
+    person.name.should == 'McLovin'
+  end
+  
+  it &quot;should return nil if the ID does not exist&quot; do
+    person = Person.find('321')
+    person.should == nil
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/base/find_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 describe &quot;ActiveCouch::Base #from_json method, with many attributes&quot; do
-  before(:each) do
+  before(:all) do
     class Hotel &lt; ActiveCouch::Base
       has :name, :which_is =&gt; :text, :with_default_value =&gt; &quot;Swissotel The Stamford&quot;
       has :star_rating, :which_is =&gt; :decimal, :with_default_value =&gt; 5.0
@@ -18,6 +18,12 @@ describe &quot;ActiveCouch::Base #from_json method, with many attributes&quot; do
     end  
   end
   
+  after(:all) do
+    Object.send(:remove_const, :Hotel)
+    Object.send(:remove_const, :Hospital)
+    Object.send(:remove_const, :CrazyPerson)
+  end  
+  
   it &quot;should have the from_json method&quot; do
     Hotel.should respond_to(:from_json)
     Hospital.should respond_to(:from_json)</diff>
      <filename>spec/base/from_json_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,12 @@ describe &quot;A class which is a subclass of ActiveCouch::Base with a has_many assoc
     @a1 = AgedPerson.new
   end
   
+  after(:each) do
+    Object.send(:remove_const, :Person)
+    Object.send(:remove_const, :AgedPerson)
+    Object.send(:remove_const, :Contact)
+  end  
+  
   it &quot;should have an instance variable called associations which is a Hash with the key being :people&quot; do
     Contact.associations.class.should == Hash
     Contact.associations.keys.should == [:people]
@@ -61,6 +67,11 @@ describe &quot;An object instantiated from class which is a subclass of ActiveCouch::
     @blog1 = Blog.new(:title =&gt; 'Lolcats Primer The Sequel', :comments =&gt; [{:body =&gt; 'can'}, {:body =&gt; 'haz'}])
   end
   
+  after(:each) do
+    Object.send(:remove_const, :Comment)
+    Object.send(:remove_const, :Blog)
+  end  
+  
   it &quot;should be able to initialize with a hash which contains descendents of ActiveCouch::Base&quot; do
     @comment1.body.should == &quot;I can haz redbull?&quot;
     @comment2.body.should == &quot;k thx bai&quot;</diff>
      <filename>spec/base/has_many_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,10 +5,14 @@ describe &quot;A class which is a subclass of ActiveCouch::Base&quot; do
     class Person &lt; ActiveCouch::Base
       has :name, :which_is =&gt; :text
     end
-    
+    # Initialize a new Person object
     @p = Person.new
   end
   
+  after(:each) do
+    Object.send(:remove_const, :Person)
+  end  
+  
   it &quot;should have a method called name which returns the value of the variable name&quot; do
     @p.should respond_to(:name)
     @p.name.should == &quot;&quot;
@@ -30,6 +34,10 @@ describe &quot;A class which is a subclass of ActiveCouch::Base with a default value
     @n = NamedPerson.new
   end
   
+  after(:each) do
+    Object.send(:remove_const, :NamedPerson)
+  end  
+  
   it &quot;should have a method called name which returns the value of the variable name&quot; do
     @n.should respond_to(:name)
     @n.name.should == &quot;McLovin&quot;
@@ -51,6 +59,10 @@ describe &quot;A class which is a subclass of ActiveCouch::Base with a default numeri
     
     @a = AgedPerson.new
   end
+  
+  after(:each) do
+    Object.send(:remove_const, :AgedPerson)
+  end  
 
   it &quot;should have an instance variable called attributes which is a Hash with the keys being :name, :age&quot; do
     AgedPerson.attributes.class.should == Hash</diff>
      <filename>spec/base/has_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,17 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 describe &quot;An object instantiated from the subclass of ActiveCouch::Base&quot; do
-  before(:each) do
+  before(:all) do
     class Person &lt; ActiveCouch::Base
       has :name, :which_is =&gt; :text
     end
-    
     @person = Person.new
   end
 
+  after(:all) do
+    Object.send(:remove_const, :Person)
+  end  
+
   it &quot;should have accessors for the id attribute&quot; do
     @person.should respond_to(:id)
     @person.should respond_to(:id=)</diff>
      <filename>spec/base/id_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,16 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 describe &quot;ActiveCouch::Base #new method with a hash containing one key-value pair&quot; do
-  before(:each) do
+  before(:all) do
     class Person &lt; ActiveCouch::Base
       has :name
     end
   end
 
+  after(:all) do
+    Object.send(:remove_const, :Person)
+  end  
+
   it &quot;should be able to initialize attributes correctly from a hash&quot; do
     p = Person.new(:name =&gt; 'McLovin')
     p.name.should == 'McLovin'
@@ -14,13 +18,17 @@ describe &quot;ActiveCouch::Base #new method with a hash containing one key-value pai
 end
 
 describe &quot;ActiveCouch::Base #new method with a hash containing more than one key-value pair&quot; do
-  before(:each) do
+  before(:all) do
     class Person &lt; ActiveCouch::Base
       has :name
       has :age, :which_is =&gt; :number, :with_default_value =&gt; 25
     end
   end
   
+  after(:all) do
+    Object.send(:remove_const, :Person)
+  end  
+  
   it &quot;should be able to initialize attributes correctly from the hash&quot; do
     p = Person.new(:name =&gt; 'McLovin', :age =&gt; 12)
     p.name.should == 'McLovin'
@@ -29,12 +37,16 @@ describe &quot;ActiveCouch::Base #new method with a hash containing more than one key
 end
 
 describe &quot;ActiveCouch::Base #new method with a hash containing a CouchDB reserved attribute&quot; do
-  before(:each) do
+  before(:all) do
     class Person &lt; ActiveCouch::Base
       has :name
     end
   end
   
+  after(:all) do
+    Object.send(:remove_const, :Person)
+  end  
+  
   it &quot;should be able to initialize attributes correclty from the has, including CouchDB reserved attributes&quot; do
     p = Person.new(:name =&gt; 'McLovin', :id =&gt; '123')
     p.name.should == 'McLovin'</diff>
      <filename>spec/base/initialize_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 describe &quot;An object instantiated from the subclass of ActiveCouch::Base&quot; do
-  before(:each) do
+  before(:all) do
     class Person &lt; ActiveCouch::Base
       has :name, :which_is =&gt; :text
     end
@@ -9,6 +9,10 @@ describe &quot;An object instantiated from the subclass of ActiveCouch::Base&quot; do
     @person = Person.new
   end
 
+  after(:all) do
+    Object.send(:remove_const, :Person)
+  end  
+
   it &quot;should have reader/writer for the rev attribute&quot; do
     @person.should respond_to(:rev)
     @person.should respond_to(:rev=)</diff>
      <filename>spec/base/rev_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,6 +13,7 @@ describe &quot;A Person subclass of ActiveCouch::Base&quot; do
   after(:each) do
     # Delete after we're done
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
    
   it &quot;should have an instance method called save&quot; do
@@ -40,6 +41,7 @@ describe &quot;A new ActiveCouch::Base instance&quot; do
   after(:each) do
     # Delete after we're done
     ActiveCouch::Migrator.delete_database('http://localhost:5984/', 'people')
+    Object.send(:remove_const, :Person)
   end
 
   it &quot;should be new&quot; do
@@ -56,9 +58,8 @@ describe &quot;A new ActiveCouch::Base instance&quot; do
 
   it &quot;should allow you to set the id attribute, and the id must be reflected in the object after saving&quot; do
     @person.id = 'abc_def'
-    puts @person.to_json
-    
     @person.save
+    
     @person.id.should == 'abc_def'
   end
   </diff>
      <filename>spec/base/save_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,13 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 describe &quot;A subclass of ActiveCouch::Base object which has called establish_connection&quot; do
-  before(:each) do
+  before(:all) do
     class Cat &lt; ActiveCouch::Base
       site 'http://192.168.0.150:7777'
     end
   end  
 
-  after(:each) do
+  after(:all) do
     # Remove class definition so we can start fresh in each spec.
     Object.send(:remove_const, :Cat)
   end
@@ -20,14 +20,14 @@ describe &quot;A subclass of ActiveCouch::Base object which has called establish_conn
 end
 
 describe &quot;An object instantiated from a subclass of ActiveCouch::Base which has called establish_connection&quot; do
-  before(:each) do
+  before(:all) do
     class Cat &lt; ActiveCouch::Base
       site 'http://192.168.0.150'
     end
     @cat = Cat.new
   end
   
-  after(:each) do
+  after(:all) do
     # Remove class definition so we can start fresh in each spec.
     Object.send(:remove_const, :Cat)
   end</diff>
      <filename>spec/base/site_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,10 @@ describe &quot;ActiveCouch::Base #to_json method with just simple attributes&quot; do
     @h = Hotel.new
   end
 
+  after(:each) do
+    Object.send(:remove_const, :Hotel)
+  end  
+
   it &quot;should have to the to_json method&quot; do
     @h.should respond_to(:to_json)
   end
@@ -53,6 +57,11 @@ describe &quot;ActiveCouch::Base #to_json with associations&quot; do
     @c.add_hospital(@h2)
   end
 
+  after(:each) do
+    Object.send(:remove_const, :Hospital)
+    Object.send(:remove_const, :CrazyPerson)
+  end  
+
   it &quot;should produce valid JSON when sent the to_json method&quot; do
     json_output = @c.to_json
     # Check for JSON regex, since attributes can appear in any order</diff>
      <filename>spec/base/to_json_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>9e6e7a363b02c8ec9bf35d7acbfe201fc467b37f</id>
    </parent>
  </parents>
  <author>
    <name>Arun Thampi</name>
    <email>arun.thampi@gmail.com</email>
  </author>
  <url>http://github.com/chuyeow/activecouch/commit/7d1ff41e419741fe31050f9080c405b314753045</url>
  <id>7d1ff41e419741fe31050f9080c405b314753045</id>
  <committed-date>2008-01-27T20:40:26-08:00</committed-date>
  <authored-date>2008-01-27T20:40:26-08:00</authored-date>
  <message>- ActiveCouch::Base#find supports find by id so Person.find('123') returns one object (or nil if ID does not exist)
- ActiveCouch::Base#count added to count the number of objects which satisfy a given condition (E.g. Person.count(:params =&gt; {:name =&gt; &quot;McLovin&quot;})</message>
  <tree>f2b7379a21a22bac2b20827c45414ea2e1ab7fc0</tree>
  <committer>
    <name>Arun Thampi</name>
    <email>arun.thampi@gmail.com</email>
  </committer>
</commit>
