<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -24,7 +24,7 @@ model has two or more keys, no big deal
 Create a property and make it a ParanoidDateTime or ParanoidBoolean type.
 
   property :deleted_at, ParanoidDateTime
-  property :deleted, ParanoidBoolean
+  property :deleted,    ParanoidBoolean
 
 All of your calls to &lt;tt&gt;##all()&lt;/tt&gt;, &lt;tt&gt;##first()&lt;/tt&gt; will be scoped 
 with &lt;tt&gt;:deleted_at =&gt; nil&lt;/tt&gt; or &lt;tt&gt;:deleted =&gt; false&lt;/tt&gt;. Plus, 
@@ -36,8 +36,9 @@ This is what the Discriminator data-type is for:
 
   class Person
     include DataMapper::Resource
-    property :id, Serial
-    property :type, Discriminator ## other shared properties here
+
+    property :id,   Serial
+    property :type, Discriminator  ## other shared properties here
   end
 
   class Salesperson &lt; Person; end
@@ -48,8 +49,8 @@ the data-store.
 
 === How do I run my own commands?
 
-  repository.adapter.query(&quot;select * from users where clue &gt; 0&quot;)
-  repository(:integration).adapter.query(&quot;select * from users where clue &gt; 0&quot;)
+  repository.adapter.query(&quot;SELECT * FROM users WHERE clue &gt; 0&quot;)
+  repository(:integration).adapter.query(&quot;SELECT * FROM users WHERE clue &gt; 0&quot;)
 
 This does not return any Users (har har), but rather Struct's that will quack
 like Users. They'll be read-only as well.</diff>
      <filename>FAQ</filename>
    </modified>
    <modified>
      <diff>@@ -1,145 +0,0 @@
-
-== 0.3.0
-* HasManyAssociation::Set now has a nil? method, so we can do stuff like cage.animal.nil?
-
-== 0.2.5
-* has_one bugfixes
-* Added syntax for setting CHECK-constraints directly in your properties (Postgres)
-* You can now set indexes with :index =&gt; true and :index =&gt; :unique
-* Support for composite indexes (thanks to Jeffrey Gelens)
-* Add composite scope to validates_uniqueness
-* Added private/protected properties
-* Remove HasOneAssociation, Make HasManyAssociation impersonate has_one relationships
-* Added #get method
-* Persistence module added, inheriting from DataMapper::Base no longer necessary
-
-== 0.2.4
-* Bug fixes
-* Added paranoia
-
-== 0.2.3
-* Added String#t for translation and overrides for default validation messages
-* Give credit where it's due: zapnap, not pimpmaster, submitted the String#blank? patch. My bad. :-(
-* MAJOR: Resolve issue with non-unique-hash values and #dirty?; now frozen original values are stored instead
-* Added Base#update_attributes
-* MAJOR: Queries are now passed to the database drivers in a parameterized fashion
-* Updated PostgreSQL driver and adapter to current
-
-== 0.2.2
-* Removed C extension bundles and log files from package
-
-== 0.2.1
-* Added :float column support
-* Added association proxies: ie: Zoo.first.exhibits.animals
-* Columns stored in SortedSet
-* Swig files are no longer RDOCed
-* Added :date column support
-* BUG: Fixed UTC issues with datetimes
-* Added #to_yaml method
-* Added #to_xml method
-* Added #to_json method
-* BUG: Fixed HasManyAssociation::Set#inspect
-* BUG: Fixed #reload!
-* BUG: Column copy for STI moved into Table#initialize to better handle STI with multiple mapped databases
-* BUG: before_create callbacks moved in the execution flow since they weren't guaranteed to fire before
-* Threading enhancements: Removed single_threaded_mode, #database block form adjusted for thread-safety
-* BUG: Fixed String#blank? when a multi-line string contained a blank line (thanks zapnap!)
-* Performance enhancements: (thanks wycats!)
-
-== 0.2.0
-* AdvancedHasManyAssociation now functional for fetches
-* AdvancedHasManyAssociation renamed to HasNAssociation
-* HasManyAssociation refactored to use HasNAssociation superclass
-* Slight spec tweaks to accomodate the updates
-* HasOneAssociation refactored to use HasNAssociation superclass
-* Added HasAndBelongsToManyAssociation, using HasNAssociation as a basis; Need to add corresponding SQL generation code in AdvancedLoadCommand
-* Added spec for habtm query generation
-* HasNAssociation#foreign_key returns a DataMapper::Adapters::Sql::Mappings::Column instance instead of a raw String now
-* Added table, association, association_table and to_sql methods to HasNAssociation
-* Added associations_spec.rb
-* Added a forced table-recreation to spec_helper.rb so the tests could run with a clean version of the database, including any new columns added to the models
-* Added HasAndBelongsToManyAssociation#to_sql (all current specs pass now!)
-* Minor tweaks to Callbacks
-* Added CallbacksHelper to declare class-method ::callbacks on DataMapper::Base
-* Implemented before_validate and after_validate hooks in ValidationHelper
-* Minor documentation additions in callbacks.rb
-* Added callbacks_spec
-* Moved class-method declarations for built-in callbacks to the callbacks helper instead of DataMapper::Base
-* Renamed :before/after_validate callback to :before/after_validation to match ActiveRecord
-* Callbacks#add now accepts a Symbol which maps a callback to a method call on the targetted instance, also added a spec to verify this behavior
-* Documented callbacks.rb
-* Added DataMapper::Associations::Reference class
-* Documented DataMapper::Associations::Reference class
-* Upgraded BelongsToAssociation to new style
-* Added AssociationsSet to handle simple &quot;last-in&quot; for association bindings
-* Fixed extra spec loading
-* Added *Association#columns
-* Some refactoring in AdvancedLoadCommand regarding :include options
-* Added support for class-less Mappings::Table instances, with just a string name
-* HasAndBelongsToManyAssociation#join_table #left_foreign_key and #right_foreign_key reference actual Table or Column objects now
-* Added :shallow_include option for HABTM joins in AdvancedLoadCommand and corresponding spec
-* Added Commands::AdvancedConditions
-* Added ORDER, LIMIT, OFFSET and WHERE support to AdvancedLoadCommand
-* Renamed spec/has_many.rb to spec/has_many_spec.rb
-* Tweaked the loading of has_many relationships; big performance boost; got rid of an extra query
-* Added EmbeddedValue support, and accompanying spec
-* Fleshed out AdvancedConditions a bit; added conditions_spec.rb
-* Added more AdvancedConditions specs
-* Added Loader to handle multi-instanced rows
-* AdvancedLoadCommand replaced LoadCommand; down to 3 failing specs
-* All specs pass
-* Added :intercept_load finder option and accompanying spec
-* Modified :intercept_load block signature to |instance, columns, row|
-* HasAndBelongsToMany works, all specs pass
-* Fixed a couple bugs with keys; Added DataMapper::Base#key= method
-* Made DataMapper::Base#lazy_load! a little more flexible
-* Removed LoadCommand overwrites from MysqlAdapter
-* Default Database#single_threaded mode is true now
-* Removed MysqlAdapter#initialize, which only served to setup the connections, moved to SqlAdapter
-* Added SqlAdapter#create_connection and SqlAdapter#close_connection abstract methods
-* Added MysqlAdapter#create_connection and MysqlAdapter#close_connection concrete methods
-* Made SqlAdapter#connection a concrete method (instead of abstract), with support for single_threaded operation
-* Database#setup now takes a Hash of options instead of a block-initializer
-* Validation chaining should work for all association types
-* Save chaining should work for has_many associations
-* Added benchmarks for in-session performance to performance.rb
-* Removed block conditions; They're slower and don't offer any real advantages
-* Removed DeleteCommand
-* Removed SaveCommand
-* Removed TableExistsCommand
-* Session renamed to Context
-* Most command implementations moved to methods in SqlAdapter
-* Removed UnitOfWork module, instead moving a slightly refactored implementation into Base
-
-== 0.1.1
-* Removed /lib/data_mapper/extensions
-* Moved ActiveRecordImpersonation into DataMapper::Support module
-* Moved CallbackHelper methods into DataMapper::Base class
-* Moved ValidationHelper into DataMapper::Validations module
-* Removed LoadedSet since it's not necessary for it to reference the Database, so it's nothing more than an array now; Replaced with Array
-* Modified data_mapper.rb to load DataMapper::Support::Enumerable
-* Modified example.rb and performance.rb to require 'lib/data_mapper' instead of modifying $LOADPATH
-* Created SqlAdapter base-class
-* Refactored MysqlAdapter to use SqlAdapter superclass
-* Refactored Sqlite3Adapter to use SqlAdapter superclass
-* Moved /lib/data_mapper/queries to /lib/data_mapper/adapters/sql/queries
-* Moved Connection, Result and Reader classes along with Coersion and Quoting modules to DataMapper::Adapters::Sql module
-* Moved DataMapper::Adapters::Sql::Queries to ::Commands
-* Moved Mappings to SqlAdapter
-* Added monolithic DeleteCommand
-* Added monolithic SaveCommand
-* Added TableExistsCommand
-* Moved save/delete logic out of Session
-* Added create-table functionality to SaveCommand
-* Cleaned up Session; #find no longer supported, use #all or #first
-* Moved object materialization into LoadCommand
-* Migrated Sqlite3Adapter::Commands
-* Added Session#query support back in
-* Removed Connection/Reader/Result classes
-* Set DataMapper::Base#key on load to avoid double-hit against Schema
-* Added DataMapper::Support::Struct for increased Session#query performance
-* Added AdvancedHasManyAssociation (preview status)
-* Added benchmarks comparing ActiveRecord::Base::find_by_sql with Session#query
-
-== 0.1.0
-* Initial Public Release</diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -66,6 +66,7 @@ script/performance.rb
 script/profile.rb
 spec/lib/adapter_helpers.rb
 spec/lib/collection_helpers.rb
+spec/lib/counter_adapter.rb
 spec/lib/pending_helpers.rb
 spec/lib/rspec_immediate_feedback_formatter.rb
 spec/public/associations/many_to_many_spec.rb
@@ -80,6 +81,7 @@ spec/public/resource_spec.rb
 spec/public/setup_spec.rb
 spec/public/shared/collection_shared_spec.rb
 spec/public/shared/resource_shared_spec.rb
+spec/public/shared/sel_spec.rb
 spec/public/transaction_spec.rb
 spec/semipublic/adapters/abstract_adapter_spec.rb
 spec/semipublic/adapters/in_memory_adapter_spec.rb</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,6 @@
 * FAQ[link:/files/FAQ.html]
 * Contact Us
   * Website - http://www.datamapper.org
-  * Bug Reports - http://wm.lighthouseapp.com/projects/4819-datamapper/overview
+  * Bug Reports - http://datamapper.lighthouseapp.com/dashboard
   * IRC Channel - &lt;tt&gt;##datamapper&lt;/tt&gt; on irc.freenode.net
   * Mailing List - http://groups.google.com/group/datamapper/</diff>
      <filename>QUICKLINKS</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,7 @@ see all &lt;tt&gt;false&lt;/tt&gt; results. Do the same in DataMapper and it's
 &lt;tt&gt;true&lt;/tt&gt; all the way down.
 
   repository do
-    @parent = Tree.find(:first, :conditions =&gt; ['name = ?', 'bob'])
+    @parent = Tree.first(:name =&gt; 'bob')
 
     @parent.children.each do |child|
       puts @parent.object_id == child.parent.object_id
@@ -75,6 +75,7 @@ text-fields) by passing a @lazy@ option to your field mapping with a value of
 
   class Animal
     include DataMapper::Resource
+
     property :name, String
     property :notes, Text, :lazy =&gt; false
   end
@@ -137,12 +138,12 @@ need other comparisons though? Try these:
   Person.all(:name.not =&gt; 'bob')
 
   # If the value of a pair is an Array, we do an IN-clause for you.
-  Person.all(:name.like =&gt; 'S%', :id =&gt; [1, 2, 3, 4, 5])
+  Person.all(:name.like =&gt; 'S%', :id =&gt; [ 1, 2, 3, 4, 5 ])
 
   Zoo.get(11)
 
   # Does a NOT IN () clause for you.
-  Person.all(:name.not =&gt; ['bob', 'rick', 'steve'])
+  Person.all(:name.not =&gt; [ 'bob', 'rick', 'steve' ])
 
 See? Fewer SQL fragments dirtying your Ruby code. And that's just a few of the
 nice syntax tweaks DataMapper delivers out of the box...</diff>
      <filename>README.txt</filename>
    </modified>
    <modified>
      <diff>@@ -29,34 +29,7 @@ Writing Specs
   And a final do: Do go against the guidelines if your best judgement tells you
   to. These are just guidelines and are obviously not fast rules.
 
-Models
-======
-
-  Models are declared in separate files as opposed to individual spec files for
-  two reasons. The first is to improve readability. By creating as few models
-  as possible and sharing these models throughout the specs, a reader can
-  become familiar with the models being used quicker. Models also follow a
-  few simple metaphors, such as a zoo, a blog implementation, etc... Following
-  metaphors makes it easier for a reader to guess what is going on with respect
-  to the models.
-
-  The second reason is to allow the spec environment to be as pristine as
-  possible going into an example. Models being loaded from the model directory
-  are tracked and reloaded before each example. Any changes that might be made
-  to the model are reset at the end.
-
 Mocks and Stubs
 ===============
 
-  Obviously, mocks and stubs are a powerful feature when it comes to BDD;
-  however, remember that you are writing specs for behavior and NOT
-  implementation.
-
-Ordering Specs
-==============
-
-  Specs aren't much use if nobody can find where anything is, so keeping specs
-  well organized is critical. Currently, we are trying out the following
-  structure:
-
-    * List guidelines here...
+  Do not use mocks or stubs for any specs in DataMapper.</diff>
      <filename>SPECS</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-See: http://github.com/sam/dm-core/wikis
+See: http://wiki.github.com/datamapper/dm-core</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -92,10 +92,10 @@ DataMapper::Logger.new(nil, :off)
 # address the data-store on the server.
 #
 # Here's some examples
-#   DataMapper.setup(:default, &quot;sqlite3://path/to/your/project/db/development.db&quot;)
-#   DataMapper.setup(:default, &quot;mysql://localhost/dm_core_test&quot;)
+#   DataMapper.setup(:default, 'sqlite3://path/to/your/project/db/development.db')
+#   DataMapper.setup(:default, 'mysql://localhost/dm_core_test')
 #     # no auth-info
-#   DataMapper.setup(:default, &quot;postgres://root:supahsekret@127.0.0.1/dm_core_test&quot;)
+#   DataMapper.setup(:default, 'postgres://root:supahsekret@127.0.0.1/dm_core_test')
 #     # with auth-info
 #
 #
@@ -104,7 +104,7 @@ DataMapper::Logger.new(nil, :off)
 #
 #   DataMapper.setup(:default, {
 #     :adapter  =&gt; 'adapter_name_here',
-#     :database =&gt; &quot;path/to/repo&quot;,
+#     :database =&gt; 'path/to/repo',
 #     :username =&gt; 'username',
 #     :password =&gt; 'password',
 #     :host     =&gt; 'hostname'
@@ -113,7 +113,7 @@ DataMapper::Logger.new(nil, :off)
 # === Logging
 # To turn on error logging to STDOUT, issue:
 #
-#   DataMapper::Logger.new(STDOUT, 0)
+#   DataMapper::Logger.new(STDOUT, :debug)
 #
 # You can pass a file location (&quot;/path/to/log/file.log&quot;) in place of STDOUT.
 # see DataMapper::Logger for more information.</diff>
      <filename>lib/dm-core.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ module DataMapper
 
       # Adapter name. Note that when you use
       #
-      # DataMapper.setup(:default, &quot;postgres://postgres@localhost/dm_core_test&quot;)
+      # DataMapper.setup(:default, 'postgres://postgres@localhost/dm_core_test')
       #
       # then adapter name is currently be set to is :default
       #</diff>
      <filename>lib/dm-core/adapters/abstract_adapter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -103,8 +103,8 @@ module DataMapper
     # This looksup a Resource by key, typecasting the key to the
     # proper object if necessary.
     #
-    #   toyotas = Cars.all(:manufacturer =&gt; &quot;Toyota&quot;)
-    #   toyo = Cars.first(:manufacturer =&gt; &quot;Toyota&quot;)
+    #   toyotas = Cars.all(:manufacturer =&gt; 'Toyota')
+    #   toyo = Cars.first(:manufacturer =&gt; 'Toyota')
     #   toyotas.get(toyo.id) == toyo                  #=&gt; true
     #
     # @param [Enumerable] *key
@@ -171,9 +171,9 @@ module DataMapper
     # Collection.
     #
     #   cars_from_91 = Cars.all(:year_manufactured =&gt; 1991)
-    #   toyotas_91 = cars_from_91.all(:manufacturer =&gt; &quot;Toyota&quot;)
+    #   toyotas_91 = cars_from_91.all(:manufacturer =&gt; 'Toyota')
     #   toyotas_91.all? { |c| c.year_manufactured == 1991 }       #=&gt; true
-    #   toyotas_91.all? { |c| c.manufacturer == &quot;Toyota&quot; }        #=&gt; true
+    #   toyotas_91.all? { |c| c.manufacturer == 'Toyota' }        #=&gt; true
     #
     # If +query+ is a Hash, results will be found by merging +query+ with this Collection's query.
     # If +query+ is a Query, results will be found using +query+ as an absolute query.</diff>
      <filename>lib/dm-core/collection.rb</filename>
    </modified>
    <modified>
      <diff>@@ -63,8 +63,8 @@ module DataMapper
   #  class Post
   #   include DataMapper::Resource
   #
-  #    property :title,  String, :accessor =&gt; :private    # Both reader and writer are private
-  #    property :body,   Text,   :accessor =&gt; :protected  # Both reader and writer are protected
+  #    property :title, String, :accessor =&gt; :private    # Both reader and writer are private
+  #    property :body,  Text,   :accessor =&gt; :protected  # Both reader and writer are protected
   #  end
   #
   # Access control is also analogous to Ruby attribute readers and writers, and can
@@ -85,7 +85,7 @@ module DataMapper
   #  class Post
   #    include DataMapper::Resource
   #
-  #    property :title,  String
+  #    property :title, String
   #
   #    def title=(new_title)
   #      raise ArgumentError if new_title != 'Luke is Awesome'</diff>
      <filename>lib/dm-core/property.rb</filename>
    </modified>
    <modified>
      <diff>@@ -68,13 +68,13 @@ module DataMapper
     #
     # @example
     #
-    #   Team.all(:wins.gt =&gt; 30, :conference =&gt; &quot;East&quot;)
+    #   Team.all(:wins.gt =&gt; 30, :conference =&gt; 'East')
     #
     # Conditions are &quot;greater than&quot; operator for &quot;wins&quot;
     # field and exact match operator for &quot;conference&quot;
     # field:
     #
-    # [[:gt, #&lt;Property:Team:wins&gt;, 30], [:eql, #&lt;Property:Team:conference&gt;, &quot;East&quot;]]
+    # [[:gt, #&lt;Property:Team:wins&gt;, 30], [:eql, #&lt;Property:Team:conference&gt;, 'East']]
     #
     # @return [Array]
     #   the conditions that will be used to scope the results
@@ -530,7 +530,7 @@ module DataMapper
         [ :unique,     unique?         ],
       ]
 
-      &quot;#&lt;#{self.class.name} #{attrs.map { |k, v| &quot;@#{k}=#{v.inspect}&quot; } * ' '}&gt;&quot;
+      &quot;#&lt;#{self.class.name} #{attrs.map { |k, v| &quot;@#{k}=#{v.inspect}&quot; }.join(' ')}&gt;&quot;
     end
 
     ##</diff>
      <filename>lib/dm-core/query.rb</filename>
    </modified>
    <modified>
      <diff>@@ -84,7 +84,7 @@ module DataMapper
           [ :property,        property        ],
         ]
 
-        &quot;#&lt;#{self.class.name} #{attrs.map { |k, v| &quot;@#{k}=#{v.inspect}&quot; } * ' '}&gt;&quot;
+        &quot;#&lt;#{self.class.name} #{attrs.map { |k, v| &quot;@#{k}=#{v.inspect}&quot; }.join(' ')}&gt;&quot;
       end
 
       private</diff>
      <filename>lib/dm-core/query/path.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,19 +8,19 @@ module DataMapper
 
     # @deprecated
     def self.append_inclusions(*inclusions)
-      warn &quot;DataMapper::Resource.append_inclusions is deprecated, use DataMapper::Model.append_inclusions instead&quot;
+      warn 'DataMapper::Resource.append_inclusions is deprecated, use DataMapper::Model.append_inclusions instead'
       Model.append_inclusions(*inclusions)
     end
 
     # @deprecated
     def self.extra_inclusions
-      warn &quot;DataMapper::Resource.extra_inclusions is deprecated, use DataMapper::Model.extra_inclusions instead&quot;
+      warn 'DataMapper::Resource.extra_inclusions is deprecated, use DataMapper::Model.extra_inclusions instead'
       Model.extra_inclusions
     end
 
     # @deprecated
     def self.descendants
-      warn &quot;DataMapper::Resource.descendants is deprecated, use DataMapper::Model.descendants instead&quot;
+      warn 'DataMapper::Resource.descendants is deprecated, use DataMapper::Model.descendants instead'
       DataMapper::Model.descendants
     end
 </diff>
      <filename>lib/dm-core/resource.rb</filename>
    </modified>
    <modified>
      <diff>@@ -94,7 +94,7 @@ module DataMapper
 
     def initialize_log(log)
       close if defined?(@log) &amp;&amp; !@log.nil? # be sure that we don't leave open files laying around.
-      @log = log || &quot;log/dm.log&quot;
+      @log = log || 'log/dm.log'
     end
 
     def reset_methods(o_or_c)
@@ -153,8 +153,8 @@ module DataMapper
     #   {:off, :fatal, :error, :warn, :info, :debug}
     # @param delimiter&lt;String&gt;     delimiter to use between message sections
     # @param log_creation&lt;Boolean&gt; log that the file is being created
-    def set_log(log, log_level = :off, delimiter = &quot; ~ &quot;, log_creation = false)
-      delimiter    ||= &quot; ~ &quot;
+    def set_log(log, log_level = :off, delimiter = ' ~ ', log_creation = false)
+      delimiter    ||= ' ~ '
 
       if log_level &amp;&amp; LEVELS[log_level.to_sym]
         self.level = log_level.to_sym
@@ -169,7 +169,7 @@ module DataMapper
 
       DataMapper.logger = self
 
-      self.info(&quot;Logfile created&quot;) if log_creation
+      self.info('Logfile created') if log_creation
     end
 
     # Flush the entire buffer to the log object.</diff>
      <filename>lib/dm-core/support/logger.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ module DataMapper
   # DataMapper.setup(name, uri) returns the Adapter for convenience, so you can
   # use code like this:
   #
-  #   adapter = DataMapper.setup(:default, &quot;mock://localhost/mock&quot;)
+  #   adapter = DataMapper.setup(:default, 'mock://localhost/mock')
   #   adapter.resource_naming_convention = NamingConventions::Resource::Underscored
   module NamingConventions
 
@@ -46,7 +46,7 @@ module DataMapper
 
       module Yaml
         def self.call(name)
-          Extlib::Inflection.pluralize(Extlib::Inflection.underscore(name)) + &quot;.yaml&quot;
+          &quot;#{Extlib::Inflection.pluralize(Extlib::Inflection.underscore(name))}.yaml&quot;
         end
       end # module Yaml
 
@@ -74,7 +74,7 @@ module DataMapper
 
       module Yaml
         def self.call(property)
-          Extlib::Inflection.pluralize(Extlib::Inflection.underscore(property.name.to_s)) + &quot;.yaml&quot;
+          &quot;#{Extlib::Inflection.pluralize(Extlib::Inflection.underscore(property.name.to_s))}.yaml&quot;
         end
       end # module Yaml
 </diff>
      <filename>lib/dm-core/support/naming_conventions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -133,7 +133,7 @@ module DataMapper
     #
     # @api private
     def within
-      raise &quot;No block provided&quot; unless block_given?
+      raise 'No block provided' unless block_given?
       raise &quot;Illegal state for within: #{@state}&quot; unless @state == :begin
       @adapters.each do |adapter, state|
         adapter.push_transaction(self)</diff>
      <filename>lib/dm-core/transaction.rb</filename>
    </modified>
    <modified>
      <diff>@@ -60,7 +60,7 @@ module DataMapper
   #         elsif value.kind_of?(String)
   #           ::JSON.load(value)
   #         else
-  #           raise ArgumentError.new(&quot;+value+ of a property of JSON type must be nil or a String&quot;)
+  #           raise ArgumentError.new('+value+ of a property of JSON type must be nil or a String')
   #         end
   #       end
   #</diff>
      <filename>lib/dm-core/type.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,19 @@
 #!/usr/bin/env ruby
 
-require File.join(File.dirname(__FILE__), '..', 'lib', 'dm-core')
-
 require 'ftools'
 require 'rubygems'
 
-# sudo gem install rbench
-# OR git clone git://github.com/somebee/rbench.git , rake install
-gem 'rbench', '~&gt;0.2.3'
-require 'rbench'
+gem 'activerecord', '~&gt;2.3.2'
+gem 'addressable',  '~&gt;2.0.2'
+gem 'faker',        '~&gt;0.3.1'
+gem 'rbench',       '~&gt;0.2.3'
 
-gem 'faker', '~&gt;0.3.1'
+require 'active_record'
+require 'addressable/uri'
 require 'faker'
+require 'rbench'
 
-gem 'activerecord', '~&gt;2.3.2'
-require 'active_record'
+require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'dm-core'))
 
 socket_file = Pathname.glob(%w[
   /opt/local/var/run/mysql5/mysqld.sock
@@ -30,7 +29,7 @@ configuration_options = {
   :adapter =&gt; 'mysql',
   :username =&gt; 'root',
   :password =&gt; '',
-  :database =&gt; 'data_mapper_1',
+  :database =&gt; 'dm_core_test',
 }
 
 configuration_options[:socket] = socket_file unless socket_file.nil?
@@ -39,7 +38,7 @@ log_dir = DataMapper.root / 'log'
 log_dir.mkdir unless log_dir.directory?
 
 DataMapper::Logger.new(log_dir / 'dm.log', :off)
-adapter = DataMapper.setup(:default, &quot;mysql://root@localhost/data_mapper_1?socket=#{socket_file}&quot;)
+adapter = DataMapper.setup(:default, &quot;mysql://root@localhost/dm_core_test?socket=#{socket_file}&quot;)
 
 if configuration_options[:adapter]
   sqlfile       = File.join(File.dirname(__FILE__), '..', 'tmp', 'performance.sql')
@@ -69,13 +68,11 @@ ARExhibit.find_by_sql('SELECT 1')
 class User
   include DataMapper::Resource
 
-  property :id,    Serial
-  property :name,  String
-  property :email, String
-  property :about, Text, :lazy =&gt; true
+  property :id,         Serial
+  property :name,       String
+  property :email,      String
+  property :about,      Text,   :lazy =&gt; false
   property :created_on, Date
-
-  auto_migrate!
 end
 
 class Exhibit
@@ -85,15 +82,14 @@ class Exhibit
   property :name,       String
   property :zoo_id,     Integer
   property :user_id,    Integer
-  property :notes,      Text, :lazy =&gt; true
+  property :notes,      Text,    :lazy =&gt; false
   property :created_on, Date
-#  property :updated_at, DateTime
 
   belongs_to :user
-
-  auto_migrate!
 end
 
+DataMapper.auto_migrate!
+
 def touch_attributes(*exhibits)
   exhibits.flatten.each do |exhibit|
     exhibit.id
@@ -182,7 +178,7 @@ puts &quot;Benchmarks will now run #{TIMES} times&quot;
 RBench.run(TIMES) do
 
   column :times
-  column :ar, :title =&gt; 'AR 2.2.2'
+  column :ar, :title =&gt; 'AR 2.3.2'
   column :dm, :title =&gt; &quot;DM #{DataMapper::VERSION}&quot;
   column :diff, :compare =&gt; [:ar, :dm]
 
@@ -225,9 +221,8 @@ RBench.run(TIMES) do
     dm { touch_attributes(Exhibit.all(:limit =&gt; 100)) }
   end
 
-  # NOTE: this will run slow until SEL is added back into dm-core
   report 'Model.all limit(100) with relationship', (TIMES / 10).ceil do
-    ar { touch_relationships(ARExhibit.all(:limit =&gt; 100, :include =&gt; [:user])) }
+    ar { touch_relationships(ARExhibit.all(:limit =&gt; 100, :include =&gt; [ :user ])) }
     dm { touch_relationships(Exhibit.all(:limit =&gt; 100)) }
   end
 
@@ -256,8 +251,8 @@ RBench.run(TIMES) do
   end
 
   report 'Resource#update' do
-    ar { e = ARExhibit.find(1); e.name = 'bob'; e.save }
-    dm { e = Exhibit.get(1); e.name = 'bob'; e.save }
+    ar { ARExhibit.find(1).update_attributes(:name =&gt; 'bob') }
+    dm { Exhibit.get(1).update(:name =&gt; 'bob') }
   end
 
   report 'Resource#destroy' do</diff>
      <filename>script/performance.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,17 @@
 #!/usr/bin/env ruby
 
-require File.join(File.dirname(__FILE__), '..', 'lib', 'dm-core')
-
 require 'ftools'
 require 'rubygems'
 
-gem 'ruby-prof', '~&gt;0.7.3'
-require 'ruby-prof'
+gem 'addressable', '~&gt;2.0.2'
+gem 'faker',       '~&gt;0.3.1'
+gem 'ruby-prof',    '~&gt;0.7.3'
 
-gem 'faker', '~&gt;0.3.1'
+require 'addressable/uri'
 require 'faker'
+require 'ruby-prof'
+
+require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'dm-core'))
 
 TEXT_OUTPUT = DataMapper.root / 'profile_results.txt'
 HTML_OUTPUT = DataMapper.root / 'profile_results.html'
@@ -25,7 +27,7 @@ SOCKET_FILE = Pathname.glob(%w[
 
 configuration_options = {
   :adapter  =&gt; 'mysql',
-  :database =&gt; 'data_mapper_1',
+  :database =&gt; 'dm_core_test',
   :host     =&gt; 'localhost',
   :username =&gt; 'root',
   :password =&gt; '',
@@ -44,13 +46,11 @@ end
 class User
   include DataMapper::Resource
 
-  property :id,    Serial
-  property :name,  String
-  property :email, String
-  property :about, Text, :lazy =&gt; true
+  property :id,         Serial
+  property :name,       String
+  property :email,      String
+  property :about,      Text,   :lazy =&gt; false
   property :created_on, Date
-
-  auto_migrate!
 end
 
 class Exhibit
@@ -60,15 +60,14 @@ class Exhibit
   property :name,       String
   property :zoo_id,     Integer
   property :user_id,    Integer
-  property :notes,      Text, :lazy =&gt; true
+  property :notes,      Text,    :lazy =&gt; false
   property :created_on, Date
-#  property :updated_at, DateTime
 
   belongs_to :user
-
-  auto_migrate!
 end
 
+DataMapper.auto_migrate!
+
 def touch_attributes(*exhibits)
   exhibits.flatten.each do |exhibit|
     exhibit.id</diff>
      <filename>script/profile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
-require 'dm-core/spec/adapter_shared_spec'
+require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
 
 describe 'Adapter' do
   supported_by :in_memory do</diff>
      <filename>spec/semipublic/adapters/in_memory_adapter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
-require 'dm-core/spec/adapter_shared_spec'
+require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
 
 describe 'Adapter' do
   supported_by :mysql do</diff>
      <filename>spec/semipublic/adapters/mysql_adapter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
-require 'dm-core/spec/adapter_shared_spec'
+require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
 
 describe 'Adapter' do
   supported_by :postgres do</diff>
      <filename>spec/semipublic/adapters/postgres_adapter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
-require 'dm-core/spec/adapter_shared_spec'
+require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
 
 describe 'Adapter' do
   supported_by :sqlite3 do</diff>
      <filename>spec/semipublic/adapters/sqlite3_adapter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_helper'))
-require 'dm-core/spec/adapter_shared_spec'
+require DataMapper.root / 'lib' / 'dm-core' / 'spec' / 'adapter_shared_spec'
 
 describe 'Adapter' do
   supported_by :yaml do</diff>
      <filename>spec/semipublic/adapters/yaml_adapter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 desc 'Run metric_fu'
 task :ci do
+  # sudo gem install jscruggs-metric_fu -s http://gems.github.com
   require 'metric_fu'
 
   Rake::Task['spec'].invoke</diff>
      <filename>tasks/ci.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,34 +24,34 @@ public_specs     = ROOT + 'spec/public/**/*_spec.rb'
 semipublic_specs = ROOT + 'spec/semipublic/**/*_spec.rb'
 all_specs        = ROOT + 'spec/**/*_spec.rb'
 
-desc &quot;Run all specifications&quot;
+desc 'Run all specifications'
 run_spec('spec', all_specs, false)
 
-desc &quot;Run all specifications with rcov&quot;
+desc 'Run all specifications with rcov'
 run_spec('rcov', all_specs, true)
 
 namespace :spec do
-  desc &quot;Run public specifications&quot;
+  desc 'Run public specifications'
   run_spec('public', public_specs, false)
 
-  desc &quot;Run semipublic specifications&quot;
+  desc 'Run semipublic specifications'
   run_spec('semipublic', semipublic_specs, false)
 end
 
 namespace :rcov do
-  desc &quot;Run public specifications with rcov&quot;
+  desc 'Run public specifications with rcov'
   run_spec('public', public_specs, true)
 
-  desc &quot;Run semipublic specifications with rcov&quot;
+  desc 'Run semipublic specifications with rcov'
   run_spec('semipublic', semipublic_specs, true)
 end
 
-desc &quot;Run all comparisons with ActiveRecord&quot;
+desc 'Run all comparisons with ActiveRecord'
 task :perf do
   sh ROOT + 'script/performance.rb'
 end
 
-desc &quot;Profile DataMapper&quot;
+desc 'Profile DataMapper'
 task :profile do
   sh ROOT + 'script/profile.rb'
 end</diff>
      <filename>tasks/dm.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,20 @@
-desc &quot;Generate gemspec&quot;
+desc 'Generate gemspec'
 task :gemspec do |x|
   # Clean up extraneous files before checking manifest
   %x[rake clean]
 
   # Check the manifest before generating the gemspec
   manifest = %x[rake check_manifest]
-  manifest.gsub!(&quot;(in /usr/local/projects/dm/dm-core)\n&quot;, &quot;&quot;)
+  manifest.gsub!(&quot;(in /usr/local/projects/dm/dm-core)\n&quot;, '')
 
   unless manifest.empty?
-    print &quot;\n&quot;, &quot;#&quot;*68, &quot;\n&quot;
+    print &quot;\n&quot;, '#' * 68, &quot;\n&quot;
     print &lt;&lt;-EOS
   Manifest.txt is not up-to-date. Please review the changes below.
   If the changes are correct, run 'rake check_manifest | patch'
   and then run this command again.
 EOS
-    print &quot;#&quot;*68, &quot;\n\n&quot;
+    print '#' * 68, &quot;\n\n&quot;
     puts manifest
   else
     %x[rake debug_gem &gt; #{GEM_NAME}.gemspec]</diff>
      <filename>tasks/gemspec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 require 'hoe'
 
-@config_file = &quot;~/.rubyforge/user-config.yml&quot;
+@config_file = '~/.rubyforge/user-config.yml'
 @config = nil
-RUBYFORGE_USERNAME = &quot;unknown&quot;
+RUBYFORGE_USERNAME = 'unknown'
 def rubyforge_username
   unless @config
     begin
@@ -16,13 +16,13 @@ Run 'rubyforge setup' to prepare your env for access to Rubyforge
       exit
     end
   end
-  RUBYFORGE_USERNAME.replace @config[&quot;username&quot;]
+  RUBYFORGE_USERNAME.replace @config['username']
 end
 
 # Remove hoe dependency
 class Hoe
   def extra_dev_deps
-    @extra_dev_deps.reject! { |dep| dep[0] == &quot;hoe&quot; }
+    @extra_dev_deps.reject! { |dep| dep[0] == 'hoe' }
     @extra_dev_deps
   end
 end</diff>
      <filename>tasks/hoe.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>script/all</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>bd09aece43d2397fc85477994a1544b1264e89e3</id>
    </parent>
  </parents>
  <author>
    <name>Dan Kubb</name>
    <email>dan.kubb@gmail.com</email>
  </author>
  <url>http://github.com/datamapper/dm-core/commit/36518c9b30e0b1d738a801fab29b5b6fab79b7ab</url>
  <id>36518c9b30e0b1d738a801fab29b5b6fab79b7ab</id>
  <committed-date>2009-05-26T18:51:07-07:00</committed-date>
  <authored-date>2009-05-26T18:51:07-07:00</authored-date>
  <message>Minor documentation update

* Fixed code formatting
* Changed some code from double quotes to single quotes (personal style)
* Removed way outdated History.txt information
* Updated links to web pages
* Fixed perf and profile scripts to execute</message>
  <tree>5e9aa7e3550274dd7ac11c7f364e1b44b8b89ca1</tree>
  <committer>
    <name>Dan Kubb</name>
    <email>dan.kubb@gmail.com</email>
  </committer>
</commit>
