Changeset 326
- Timestamp:
- 02/18/08 20:36:07 (8 months ago)
- Files:
-
- trunk/plugin/acts_as_ferret/lib/acts_as_ferret.rb (modified) (2 diffs)
- trunk/plugin/acts_as_ferret/lib/index.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plugin/acts_as_ferret/lib/acts_as_ferret.rb
r324 r326 157 157 def self.define_index(name, options = {}) 158 158 name = name.to_sym 159 raise IndexAlreadyDefined.new(name) if ferret_indexes.has_key?(name) 159 pending_classes = nil 160 if ferret_indexes.has_key?(name) 161 # seems models have been already loaded. remove that index for now, 162 # re-register any already loaded classes later on. 163 idx = get_index(name) 164 pending_classes = idx.index_definition[:registered_models] 165 pending_classes_configs = idx.registered_models_config 166 idx.close 167 ferret_indexes.delete(name) 168 end 169 160 170 index_definition = { 161 171 :index_dir => "#{ActsAsFerret::index_dir}/#{name}", … … 205 215 index_definition[:ferret_fields].update build_field_config( options[:additional_fields] ) 206 216 207 ferret_indexes[name] = create_index_instance index_definition 217 idx = ferret_indexes[name] = create_index_instance( index_definition ) 218 219 # re-register early loaded classes 220 if pending_classes 221 pending_classes.each { |clazz| idx.register_class clazz, pending_classes_configs[clazz] } 222 end 223 224 return idx 208 225 end 209 226 trunk/plugin/acts_as_ferret/lib/index.rb
r323 r326 21 21 include FerretFindMethods 22 22 23 attr_ accessor :logger, :index_name, :index_definition23 attr_reader :logger, :index_name, :index_definition, :registered_models_config 24 24 def initialize(index_definition) 25 25 @index_definition = index_definition 26 @registered_models_config = {} 26 27 @index_name = index_definition[:name] 27 28 @logger = IndexLogger.new(ActsAsFerret::logger, @index_name) … … 33 34 logger.info "register class #{clazz} with index #{index_name}" 34 35 index_definition[:registered_models] << clazz 36 @registered_models_config[clazz] = options 35 37 36 38 # merge fields from this acts_as_ferret call with predefined fields
