<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/scenarios/extensions/active_record.rb</filename>
    </added>
    <added>
      <filename>lib/scenarios/table_blasting.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -2,6 +2,13 @@ class Person &lt; ActiveRecord::Base; end
 class Place &lt; ActiveRecord::Base; end
 class Thing &lt; ActiveRecord::Base; end
 class Note &lt; ActiveRecord::Base; end
+
+class SideEffectyThing &lt; ActiveRecord::Base
+  after_create do
+    Thing.create!
+  end
+end
+
 module ModelModule
   class Model &lt; ActiveRecord::Base; end
 end
\ No newline at end of file</diff>
      <filename>app/models.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,28 +1,31 @@
 ActiveRecord::Schema.define do
-  create_table &quot;people&quot;, :force =&gt; true do |t|
-    t.column &quot;first_name&quot;, :string
-    t.column &quot;last_name&quot;, :string
+  create_table :people, :force =&gt; true do |t|
+    t.column :first_name, :string
+    t.column :last_name, :string
   end
   
-  create_table &quot;places&quot;, :force =&gt; true do |t|
-    t.column &quot;name&quot;, :string
-    t.column &quot;location&quot;, :string 
+  create_table :places, :force =&gt; true do |t|
+    t.column :name, :string
+    t.column :location, :string 
   end
   
-  create_table &quot;things&quot;, :force =&gt; true do |t|
-    t.column &quot;name&quot;, :string
-    t.column &quot;description&quot;, :string
+  create_table :things, :force =&gt; true do |t|
+    t.column :name, :string
+    t.column :description, :string
+  end
+  
+  create_table :side_effecty_things, :force =&gt; true do |t|
   end
 
   create_table :models, :force =&gt; true do |t|
-    t.column &quot;name&quot;, :string
-    t.column &quot;description&quot;, :string
+    t.column :name, :string
+    t.column :description, :string
   end
   
-  create_table &quot;notes&quot;, :force =&gt; true do |t|
-    t.column &quot;content&quot;, :string
-    t.column &quot;created_at&quot;, :datetime
-    t.column &quot;updated_at&quot;, :datetime
+  create_table :notes, :force =&gt; true do |t|
+    t.column :content, :string
+    t.column :created_at, :datetime
+    t.column :updated_at, :datetime
   end
 end
   
\ No newline at end of file</diff>
      <filename>app/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,6 +22,7 @@ Scenario = Scenarios
 
 require 'active_record/fixtures'
 require 'scenarios/configuration'
+require 'scenarios/table_blasting'
 require 'scenarios/table_methods'
 require 'scenarios/loading'
 require 'scenarios/base'</diff>
      <filename>lib/scenarios.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,4 +2,5 @@ extdir = File.dirname(__FILE__) + '/extensions'
 
 require &quot;#{extdir}/string&quot;
 require &quot;#{extdir}/symbol&quot;
-require &quot;#{extdir}/test_case&quot; rescue nil
\ No newline at end of file
+require &quot;#{extdir}/test_case&quot; rescue nil
+require &quot;#{extdir}/active_record&quot;
\ No newline at end of file</diff>
      <filename>lib/scenarios/extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,7 @@ module Scenarios
     
     def load_scenarios(scenario_classes)
       self.table_config = Configuration.new
+      ActiveRecord::ConnectionAdapters::AbstractAdapter.table_config = self.table_config
       self.class.loaded_scenarios = []
       previous_scenario = nil
       if scenario_classes</diff>
      <filename>lib/scenarios/loading.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,10 @@ module Scenarios
   # available to all Scenario instances, test and example classes, and test
   # and example instances.
   module TableMethods
-    attr_accessor :table_config
-    delegate :table_readers, :blasted_tables, :record_metas, :symbolic_names_to_id, :to =&gt; :table_config
+    include TableBlasting
+    
+    attr_accessor :table_config unless respond_to?(:table_config)
+    delegate :table_readers, :record_metas, :symbolic_names_to_id, :to =&gt; :table_config
     
     # Insert a record into the database, add the appropriate helper methods
     # into the scenario and spec, and return the ID of the inserted record:
@@ -57,13 +59,6 @@ module Scenarios
       end
     end
     
-    def blast_table(name) # :nodoc:
-      ActiveRecord::Base.silence do
-        ActiveRecord::Base.connection.delete &quot;DELETE FROM #{name}&quot;, &quot;Scenario Delete&quot;
-      end
-      blasted_tables &lt;&lt; name
-    end
-    
     private
       def insert(record_or_model, class_identifier, *args, &amp;insertion)
         symbolic_name, attributes = extract_creation_arguments(args)</diff>
      <filename>lib/scenarios/table_methods.rb</filename>
    </modified>
    <modified>
      <diff>@@ -150,5 +150,8 @@ describe &quot;create_model table method&quot; do
     things(:mything).should == thing
   end
   
-  it &quot;should blast any table touched as a side effect of creating a model (callbacks, observers, etc.)&quot;
+  it &quot;should blast any table touched as a side effect of creating a model (callbacks, observers, etc.)&quot; do
+    create_model SideEffectyThing
+    blasted_tables.should include(Thing.table_name)
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/scenarios_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,8 +2,6 @@ namespace :db do
   namespace :scenario do
     desc &quot;Load a scenario into the current environment's database using SCENARIO=scenario_name&quot;
     task :load =&gt; 'db:reset' do
-      ActiveRecord::Base.instantiate_observers
-      
       scenario_name = ENV['SCENARIO'] || 'default'
       begin
         klass = Scenarios.load(scenario_name)</diff>
      <filename>tasks/scenario.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>491a83f6012933dda2a91a6be22e4d25cca82ea6</id>
    </parent>
  </parents>
  <author>
    <name>Adam Williams</name>
    <email>adam@thewilliams.ws</email>
  </author>
  <url>http://github.com/aiwilliams/scenarios/commit/52abb358e3f2590d17a8c5642337c4a07a74ec3f</url>
  <id>52abb358e3f2590d17a8c5642337c4a07a74ec3f</id>
  <committed-date>2007-11-29T16:46:58-08:00</committed-date>
  <authored-date>2007-11-29T16:46:58-08:00</authored-date>
  <message>scenarios: when create_model is used, and those models have side effects which insert data, the tables are appropriately blasted</message>
  <tree>b4f3e7867297d33925bca406cbf5dd106987e12c</tree>
  <committer>
    <name>Adam Williams</name>
    <email>adam@thewilliams.ws</email>
  </committer>
</commit>
