<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -8,19 +8,27 @@ module Merb
       end
     
       module ClassMethods
-        # Get fixture:
         # Post.fixture(:botanicus)
-        # Create fixture:
-        # Post.fixture.create(:botanicus, Author.new)
-        def fixture(name = nil)
-          @fixture ||= Merb::Fixtures::Fixture.new
+        def fixture(name)
+          self.init
           name ? @fixture.load(name) : @fixture
         end
+        
+        # Post.get_fixture.create(:botanicus, Author.new)
+        def get_fixture
+          self.init
+          return @fixture
+        end
       
-        # Post.fixtures =&gt; [#&lt;Post...&gt;, ...]
+        # Post.fixtures =&gt; {:name =&gt; object}
         def fixtures
+          self.init
+          return @fixture
+        end
+        
+        protected
+        def init
           @fixture ||= Merb::Fixtures::Fixture.new
-          return @fixture.objects
         end
       end
     end</diff>
      <filename>lib/merb-fixtures/shared/extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,8 @@
-# Better will be creating one instance per object (one for Post, one for Author ... )
 require &quot;merb-fixtures/shared/orm&quot;
 
 module Merb
   module Fixtures
     class Fixture
-      # FIXME: isn't better to have it as hash?
       def initialize
         @fixtures = Hash.new
       end
@@ -20,10 +18,6 @@ module Merb
       end
   
       def objects
-        @fixtures.values
-      end
-      
-      def keys_with_objects
         @fixtures
       end
     end</diff>
      <filename>lib/merb-fixtures/shared/fixture.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,6 @@ module Merb
           directory = Merb::Plugins.config[:fixtures][:directory]
           if File.exist?(directory)
             Dir[directory/&quot;*.rb&quot;].each do |file|
-              # It's important to not use just load, remember the namespace
               Kernel.load(file)
             end
           else
@@ -19,11 +18,13 @@ module Merb
       alias :reload :load
       
       def all
-        ORM.models.map { |model| model.fixtures unless model.fixtures.empty? }.compact.flatten
+        output = Hash.new
+        ORM.models.each { |model| output.merge!(model.fixtures.objects) unless model.fixtures.objects.values.empty? }
+        return output
       end
-
+      
       def save
-        Merb::Fixtures.all.each { |fixture| fixture.save }
+        Merb::Fixtures.all.each { |name, fixture| fixture.save rescue raise &quot;Fixture #{name} (model #{fixture.class}) couldn't be saved!&quot;}
       end
     end
   end</diff>
      <filename>lib/merb-fixtures/shared/fixtures.rb</filename>
    </modified>
    <modified>
      <diff>@@ -19,11 +19,11 @@ module Kernel
   # end
   # - 
   # @public
-  def fixture_for(klass, name, &amp;block)
+  def fixture_for(klass, name = nil, &amp;block)
     include Merb::Fixtures::Helpers if Merb::Plugins.config[:fixtures]
     instance = klass.new # Post.new
     instance.instance_eval(&amp;block) if block_given?
-    klass.fixture.create(name, instance)
+    klass.get_fixture.create(name, instance)
     return instance
   end
   </diff>
      <filename>lib/merb-fixtures/shared/kernel.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ describe &quot;&lt;model&gt;&quot; do
   before(:each) do
     @botanicus = Author.new
     @fixtures  = Array(@botanicus)
-    Author.fixture.create(:botanicus, @botanicus)
+    Author.get_fixture.create(:botanicus, @botanicus)
   end
   
   describe &quot;.fixture&quot; do</diff>
      <filename>spec/merb-fixtures/datamapper/datamapper_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>41585861fd441b5f703734f114ef001b2806b438</id>
    </parent>
  </parents>
  <author>
    <name>Botanicus</name>
    <email>knava.bestvinensis@gmail.com</email>
  </author>
  <url>http://github.com/botanicus/merb-fixtures/commit/9bf25de4443da74d2ab870acb11491943573ede1</url>
  <id>9bf25de4443da74d2ab870acb11491943573ede1</id>
  <committed-date>2008-08-13T05:21:25-07:00</committed-date>
  <authored-date>2008-08-13T05:21:25-07:00</authored-date>
  <message>BIG CHANGES: Fixtures's output is hash, not array! Refactoring and improving.</message>
  <tree>92bf8889ade03814cee365b5dbfcf46948074b89</tree>
  <committer>
    <name>Botanicus</name>
    <email>knava.bestvinensis@gmail.com</email>
  </committer>
</commit>
