<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,13 +1,53 @@
 Shadow
 ======
 
-Introduction goes here.
-
+Provides a history of attribute and association updates for models. This coincides with a versioning system (such as acts_as_versioned). When used in tandem, you get both a history of changes and a history of what changed.
 
 Example
 =======
 
-Example goes here.
+# After creating your migrations (see TODO)
+
+# In your model
+
+class Vacation &lt; ActiveRecord::Base
+  has_many :photos
+
+  # By default, shadows all :attributes and :associations. Here we're attaching a user, so we know who added a photo.
+  shadow :associations =&gt; :photos, :attach =&gt; :user
+end
+
+# In your controller (here we assume nested under VacationController)
+
+class PhotosController &lt; ApplicationController
+  def create
+    @vacation = Vacation.find params[:vacation_id]
+
+    # This is where you attach the :user to the photo. If Photo doesn't have a user attribute or association, shadow
+    # will attach an attr_accessor to it and store it with the AssociationShadow record.
+    @photo = Photo.new params[:photo].merge(:user =&gt; current_user)
+
+    # You must either use the #association&lt;&lt;, #association.push, or #association.create for the shadow to be created.
+    if @vacation.photos &lt;&lt; @photo
+      # success!
+    end
+  end
+end
+
+# In your view (displaying the updates in the show action of VacationController)
+
+&lt;h1&gt;Vacation Updates&lt;/h1&gt;
+
+&lt;% @vacation.association_updates.each do |update| -%&gt;
+  &lt;p&gt;&lt;%= update.user.name %&gt; &lt;%= update.action %&gt; &lt;%= update.record.thumbnail %&gt; to &lt;%= update.association %&gt;&lt;/p&gt;
+&lt;% end -%&gt;
+
+# Example result from view:
+
+&lt;h1&gt;Vacation Updates&lt;/h1&gt;
+
+&lt;p&gt;Jordan added [photo thumbnail] to photos&lt;/p&gt;
+
 
 
-Copyright (c) 2008 [name of plugin creator], released under the MIT license
+Copyright (c) 2008 Jordan Fowler, released under the MIT license</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,40 @@
+TODO
+====
+
+- RSpec test coverage (currently only tested in application originally written for)
+
+- Need to define create_attribute_shadow_table and create_association_shadow_table, which will generate a migration for you.
+  Usage example:
+  Vacation.create_attribute_shadow_table    # options include :attachments =&gt; [:user, ...] &lt;- creates user_id
+  # Resulting table: vacation_attribute_shadows
+
+  Vacation.create_association_shadow_table  # options include :attachments =&gt; [:user, ...] &lt;- creates user_id
+  # Resulting table: vacation_association_shadows
+
+  # And (already defined)
+  Vacation.create_shadow_tables # subsequently calls create_shadow_attributes_table and create_shadow_associations_table
+
+  # This should generate:
+  class CreateVacationShadowTables &lt; ActiveRecord::Migration
+    def self.up
+      create_table :vacation_attribute_shadows do |t|
+        t.text :updated_attributes
+        t.integer :version, :vacation_id, :user_id
+
+        t.timestamps
+      end
+
+      create_table :vacation_association_shadows do |t|
+        t.string :association, :action
+        t.integer :record_id, :record_version, :vacation_id, :user_id
+
+        t.timestamps
+      end
+    end
+
+    def self.down
+      drop_table :vacation_attribute_shadows
+      drop_table :vacation_association_shadows
+    end
+  end
+  
\ No newline at end of file</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -162,8 +162,8 @@ module ActiveRecord
         end
 
         module ShadowClassMethods
-          def create_shadowed_attributes_table
-            # this should generate the (table_name)_shadowed_attributes table
+          def create_attribute_shadow_table
+            # this should generate the (table_name)_attribute_shadows table
 
             # [
             #   table_name_prefix,
@@ -173,8 +173,8 @@ module ActiveRecord
             # ].join
           end
 
-          def create_shadowed_associations_table
-            # this should generate the (table_name)_shadowed_associations table
+          def create_association_shadow_table
+            # this should generate the (table_name)_association_shadows table
 
             # [
             #   table_name_prefix,
@@ -185,8 +185,8 @@ module ActiveRecord
           end
 
           def create_shadow_tables
-            create_shadow_attributes_table
-            create_shadow_associations_table
+            create_attribute_shadow_table
+            create_association_shadow_table
           end
 
           protected</diff>
      <filename>lib/activerecord/shadow.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ca63fa36a9d2602c6e26109fa24469ca7341a4f8</id>
    </parent>
  </parents>
  <author>
    <name>Jordan Fowler</name>
    <email>me@jordanfowler.com</email>
  </author>
  <url>http://github.com/TheBreeze/shadow/commit/cc528304cc787245a0c58a5a49d6bbe1b9aa37ca</url>
  <id>cc528304cc787245a0c58a5a49d6bbe1b9aa37ca</id>
  <committed-date>2008-05-02T16:18:17-07:00</committed-date>
  <authored-date>2008-05-02T16:18:17-07:00</authored-date>
  <message>Updated README, added TODO, updated method names.</message>
  <tree>c71d1de53b5b1ccc9a9ef37461592e11680fdfe7</tree>
  <committer>
    <name>Jordan Fowler</name>
    <email>me@jordanfowler.com</email>
  </committer>
</commit>
