I've written a hack to make TS behave better in sitautions where the
daemon might not be reachable. The idea is to avoid throwing
exceptions when deleting models. Note that I'm still not handling
updating of delta indxes (i'm not using it yet), but only deleting of
models.
It seems to work, but it's work in progress. Use at your own risk :-)
I've added a 'thinking_sphinx_hacks' plugin in vendor/ with the
following code:
module ThinkingSphinx
module ActiveRecord
#make sure ThinkingSphinx::ConnectionError is never thrown,
#when destroying models, since we never want a destroy to
#fail just because the search index can't be updated
alias_method :original_toggle_deleted, :toggle_deleted
def toggle_deleted
original_toggle_deleted
rescue ThinkingSphinx::ConnectionError
#do nothing
end
end
class Collection < ::Array
#avoid throwing ActiveRecord::RecordNotFound exceptions
#in case a search result doesn't exists. this might
#otherwise happen if the search deamon could not be reached
#when a model was deleted, and the delete flag was not set.
class << self #alias class methods by working on the class
object
alias_method :original_instance_from_match, :instance_from_match
end
def self.instance_from_match(match, options)
self.original_instance_from_match match, options
rescue ::ActiveRecord::RecordNotFound
#do nothing
end
end
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Thinking Sphinx" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/thinking-sphinx?hl=en
-~----------~----~----~----~------~----~------~--~---