On Thu, Oct 04, 2007 at 11:56:36AM -0400, Erik Morton
wrote:> Follow Up. I have 5 mongrels and a ferret drb server running on the  
> same machine. In environment.rb I disable ferret like so:
> 
> MyModel.disable_ferret
> 
> I have a script that runs every  hour that does the following:
> 
> MyModel.enable_ferret
> MyModel.bulk_index all_records_created_or_changed_in_the_last_hour
> 
> Now, ClassMethods defines bulk_index as:
> 
>      def bulk_index(*ids)
>        ids = ids.first if ids.size == 1 &&
ids.first.is_a?(Enumerable)
>        aaf_index.bulk_index(ids)
>      end
> 
> aaf_index is an instance of RemoteIndex that dispatches bulk_index to  
> the drb server, correct? If that''s the case, then the Server class
> sends the method call to the aaf_index, which has bulk_index defined  
> in ferret_extensions.rb, correct? the bulk_index method uses the  
> BulkIndexer.index_records method, which checks to see if ferret is  
> enbled for each record: rec.ferret_enabled?(true). Now,  if this all  
> happens in the Drb server, wouldn''t ferret be disabled there as it
is
> obviously using the same environment.rb file that disables ferret for  
> MyModel?
Exactly.  Since with bulk_index (and rebuild_index, too) the
ferret_enabled? check always only happens in the DRb server, calling
MyModel.enable_ferret on the client side has no effect.
I just fixed this - instance.ferret_enabled? now ignores the
class level ferret_enabled state when called by the bulk indexer (which
is also used by the rebuild_index method, so the same behaviour applies
there). 
I think the behaviour now is more useful - when you disable ferret at
the class level and then explicitly call bulk_index or rebuild_index on
this class, aaf assumes you have a good reason to do so and just does
what you say.
Cheers,
Jens
-- 
Jens Kr?mer
webit! Gesellschaft f?r neue Medien mbH
Schnorrstra?e 76 | 01069 Dresden
Telefon +49 351 46766-0 | Telefax +49 351 46766-66
kraemer at webit.de | www.webit.de
 
Amtsgericht Dresden | HRB 15422
GF Sven Haubold, Hagen Malessa