<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,7 @@
 == master
 
+* Update to enumerate_by 0.4.1's #fast_bootstrap for speed boost
+
 == 0.5.0 / 2009-04-30
 
 * Replace acts_as_enumeration with enumerate_by</diff>
      <filename>CHANGELOG.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -60,4 +60,4 @@ To run against a specific version of Rails:
 == Dependencies
 
 * Rails 2.3 or later
-* enumerate_by[http://github.com/pluginaweek/enumerate_by]
+* enumerate_by[http://github.com/pluginaweek/enumerate_by] 0.4.1 or later</diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ spec = Gem::Specification.new do |s|
   s.require_path      = 'lib'
   s.has_rdoc          = true
   s.test_files        = Dir['test/**/*_test.rb']
-  s.add_dependency    'enumerate_by', '&gt;= 0.4.0'
+  s.add_dependency    'enumerate_by', '&gt;= 0.4.1'
   
   s.author            = 'Aaron Pfeifer'
   s.email             = 'aaron@pluginaweek.org'</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -45,11 +45,18 @@ class Country &lt; ActiveRecord::Base
   alias_attribute :abbreviation_3, :alpha_3_code
   
   def initialize(attributes = nil) #:nodoc:
-    super
-    self.official_name ||= name unless attributes &amp;&amp; attributes.include?(:official_name)
+    super(self.class.with_defaults(attributes))
   end
   
-  fast_bootstrap(
+  # Adds the default attributes for the given country attributes
+  def self.with_defaults(attributes = nil)
+    attributes ||= {}
+    attributes.symbolize_keys!
+    attributes[:official_name] = attributes[:name] unless attributes.include?(:official_name)
+    attributes
+  end
+  
+  fast_bootstrap([
     {:id =&gt; 4, :name =&gt; &quot;Afghanistan&quot;, :official_name =&gt; &quot;Islamic Republic of Afghanistan&quot;, :alpha_2_code =&gt; 'AF', :alpha_3_code =&gt; 'AFG'},
     {:id =&gt; 8, :name =&gt; &quot;Albania&quot;, :official_name =&gt; &quot;Republic of Albania&quot;, :alpha_2_code =&gt; 'AL', :alpha_3_code =&gt; 'ALB'},
     {:id =&gt; 10, :name =&gt; &quot;Antarctica&quot;, :alpha_2_code =&gt; 'AQ', :alpha_3_code =&gt; 'ATA'},
@@ -296,5 +303,5 @@ class Country &lt; ActiveRecord::Base
     {:id =&gt; 882, :name =&gt; &quot;Samoa&quot;, :official_name =&gt; &quot;Independent State of Samoa&quot;, :alpha_2_code =&gt; 'WS', :alpha_3_code =&gt; 'WSM'},
     {:id =&gt; 887, :name =&gt; &quot;Yemen&quot;, :official_name =&gt; &quot;Republic of Yemen&quot;, :alpha_2_code =&gt; 'YE', :alpha_3_code =&gt; 'YEM'},
     {:id =&gt; 894, :name =&gt; &quot;Zambia&quot;, :official_name =&gt; &quot;Republic of Zambia&quot;, :alpha_2_code =&gt; 'ZM', :alpha_3_code =&gt; 'ZMB'}
-  )
+  ].map {|attributes| with_defaults(attributes)})
 end</diff>
      <filename>app/models/country.rb</filename>
    </modified>
    <modified>
      <diff>@@ -43,13 +43,25 @@ class Region &lt; ActiveRecord::Base
   validates_length_of :abbreviation, :within =&gt; 1..5
   
   def initialize(attributes = nil) #:nodoc:
-    super
+    super(self.class.with_defaults(attributes))
+  end
+  
+  # Adds the default attributes for the given country attributes
+  def self.with_defaults(attributes = nil)
+    attributes ||= {}
+    attributes.symbolize_keys!
+    
+    country = attributes.delete(:country)
+    attributes[:country_id] = country.id if country
+    attributes[:abbreviation] = &quot;%03d&quot; % (attributes[:id] % 1000) if !attributes.include?(:abbreviation) &amp;&amp; attributes[:id]
+    
+    country ||= attributes[:country_id] &amp;&amp; Country.find(attributes[:country_id])
+    attributes[:code] = &quot;#{country}-#{attributes[:abbreviation]}&quot;
     
-    self.abbreviation = &quot;%03d&quot; % (attributes[:id] % 1000) if attributes &amp;&amp; !attributes.include?(:abbreviation) &amp;&amp; attributes[:id]
-    self.code = &quot;#{country}-#{abbreviation}&quot;
+    attributes
   end
   
-  fast_bootstrap(
+  fast_bootstrap([
     # Andorra
     [{:country =&gt; Country['AD']}].map {|r| [
       r.merge(:id =&gt; 20002, :name =&gt; &quot;Canillo&quot;),
@@ -5380,5 +5392,5 @@ class Region &lt; ActiveRecord::Base
       r.merge(:id =&gt; 716009, :name =&gt; &quot;Matabeleland South&quot;, :abbreviation =&gt; 'MS'),
       r.merge(:id =&gt; 716010, :name =&gt; &quot;Midlands&quot;, :abbreviation =&gt; 'MI')
     ]}
-  )
+  ].flatten.map {|attributes| with_defaults(attributes)})
 end</diff>
      <filename>app/models/region.rb</filename>
    </modified>
    <modified>
      <diff>@@ -44,9 +44,10 @@ class CountryTest &lt; ActiveRecord::TestCase
     assert country.errors.invalid?(:name)
   end
   
-  def test_should_not_require_an_official_name
+  def test_should_require_an_official_name
     country = new_country(:official_name =&gt; nil)
-    assert country.valid?
+    assert !country.valid?
+    assert country.errors.invalid?(:official_name)
   end
   
   def test_should_require_an_alpha_2_code</diff>
      <filename>test/unit/country_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b20f9d13e3fa1868f8098e206bfebfac5c303086</id>
    </parent>
  </parents>
  <author>
    <name>Aaron Pfeifer</name>
    <email>aaron.pfeifer@gmail.com</email>
  </author>
  <url>http://github.com/pluginaweek/has_addresses/commit/1809b97fa1d95578e06905dcb15e3acc94492426</url>
  <id>1809b97fa1d95578e06905dcb15e3acc94492426</id>
  <committed-date>2009-05-01T17:59:14-07:00</committed-date>
  <authored-date>2009-05-01T17:59:14-07:00</authored-date>
  <message>Update to enumerate_by 0.4.1's #fast_bootstrap for speed boost</message>
  <tree>2e2eabe145eed6f66aae8ad616ba04384ec6a0dd</tree>
  <committer>
    <name>Aaron Pfeifer</name>
    <email>aaron.pfeifer@gmail.com</email>
  </committer>
</commit>
