<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -118,7 +118,7 @@ module Sunspot
         def for(clazz) #:nodoc:
           original_class_name = clazz.name
           clazz.ancestors.each do |ancestor_class|
-            next if ancestor_class.name.empty?
+            next if ancestor_class.name.nil? || ancestor_class.name.empty?
             class_name = ancestor_class.name.to_sym
             return instance_adapters[class_name] if instance_adapters[class_name]
           end
@@ -227,14 +227,21 @@ module Sunspot
         #
         # ==== Returns
         #
-        # Class:: Implementation of DataAccessor, or nil if none found
+        # Class:: Implementation of DataAccessor
+        #
+        # ==== Raises
+        #
+        # Sunspot::NoAdapterError:: If no data accessor exists for the given class
         #
         def for(clazz) #:nodoc:
+          original_class_name = clazz.name
           clazz.ancestors.each do |ancestor_class|
-            next if ancestor_class.name.empty?
+            next if ancestor_class.name.nil? || ancestor_class.name.empty?
             class_name = ancestor_class.name.to_sym
             return data_accessors[class_name] if data_accessors[class_name]
           end
+          raise(Sunspot::NoAdapterError,
+                &quot;No data accessor is configured for #{original_class_name} or its superclasses. See the documentation for Sunspot::Adapters&quot;)
         end
 
         protected</diff>
      <filename>lib/sunspot/adapters.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,12 @@ describe Sunspot::Adapters::InstanceAdapter do
   it &quot;finds adapter by mixin&quot; do
     Sunspot::Adapters::InstanceAdapter::for(MixModel).should be(MixInModelInstanceAdapter)
   end
+
+  it 'throws NoAdapterError if anonymous module passed in' do
+    lambda do
+      Sunspot::Adapters::InstanceAdapter::for(Module.new)
+    end.should raise_error(Sunspot::NoAdapterError)
+  end
 end
 
 describe Sunspot::Adapters::DataAccessor do
@@ -18,4 +24,10 @@ describe Sunspot::Adapters::DataAccessor do
   it &quot;finds adapter by mixin&quot; do
     Sunspot::Adapters::DataAccessor::for(MixModel).should be(MixInModelDataAccessor)
   end
+
+  it 'throws NoAdapterError if anonymous module passed in' do
+    lambda do
+      Sunspot::Adapters::DataAccessor::for(Module.new)
+    end.should raise_error(Sunspot::NoAdapterError)
+  end
 end</diff>
      <filename>spec/api/adapters_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6e06640b408d0bfab79f4371e731c45c57aebb3c</id>
    </parent>
  </parents>
  <author>
    <name>Mat Brown</name>
    <email>mat@patch.com</email>
  </author>
  <url>http://github.com/outoftime/sunspot/commit/c70721e369ce01ee248c46f86f5e630633e6ea70</url>
  <id>c70721e369ce01ee248c46f86f5e630633e6ea70</id>
  <committed-date>2009-06-15T15:04:22-07:00</committed-date>
  <authored-date>2009-06-15T15:04:22-07:00</authored-date>
  <message>Adapter lookup correctly handles anonymous modules in Ruby 1.9</message>
  <tree>301a89f0d6d840f1b2accf11a36f9832aa7a046f</tree>
  <committer>
    <name>Mat Brown</name>
    <email>mat@patch.com</email>
  </committer>
</commit>
