Class: Sunspot::SessionProxy::ClassShardingSessionProxy
- Inherits:
-
ShardingSessionProxy
- Object
- AbstractSessionProxy
- ShardingSessionProxy
- Sunspot::SessionProxy::ClassShardingSessionProxy
- Defined in:
- lib/sunspot/session_proxy/class_sharding_session_proxy.rb
Overview
An abstract subclass of ShardingSessionProxy that shards by class. Concrete subclasses should not override the #session_for method, but should instead implement the #session_for_class method. They must also still implement the #all_sessions method.
Unlike its parent class, ClassShardingSessionProxy implements #remove_by_id and all flavors of #remove_all.
Instance Method Summary collapse
-
#remove_all(clazz = nil) ⇒ Object
See Sunspot.remove_all.
-
#remove_all!(clazz = nil) ⇒ Object
See Sunspot.remove_all!.
-
#remove_by_id(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id.
-
#remove_by_id!(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id!.
-
#session_for_class(clazz) ⇒ Object
Remove the Session object pointing at the shard that indexes the given class.
Methods inherited from ShardingSessionProxy
#all_sessions, #commit, #commit_if_delete_dirty, #commit_if_dirty, #delete_dirty?, #dirty?, #index, #index!, #initialize, #more_like_this, #new_more_like_this, #new_search, #optimize, #remove, #remove!, #search
Methods inherited from AbstractSessionProxy
Constructor Details
This class inherits a constructor from Sunspot::SessionProxy::ShardingSessionProxy
Instance Method Details
#remove_all(clazz = nil) ⇒ Object
See Sunspot.remove_all
42 43 44 45 46 47 48 |
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 42 def remove_all(clazz = nil) if clazz session_for_class(clazz).remove_all(clazz) else all_sessions.each { |session| session.remove_all } end end |
#remove_all!(clazz = nil) ⇒ Object
See Sunspot.remove_all!
53 54 55 56 57 58 59 |
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 53 def remove_all!(clazz = nil) if clazz session_for_class(clazz).remove_all!(clazz) else all_sessions.each { |session| session.remove_all! } end end |
#remove_by_id(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id
26 27 28 29 |
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 26 def remove_by_id(clazz, *ids) ids.flatten! session_for_class(clazz).remove_by_id(clazz, ids) end |
#remove_by_id!(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id!
34 35 36 37 |
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 34 def remove_by_id!(clazz, *ids) ids.flatten! session_for_class(clazz).remove_by_id!(clazz, ids) end |
#session_for_class(clazz) ⇒ Object
Remove the Session object pointing at the shard that indexes the given class.
<strong>Concrete subclasses must implement this method.</strong>
19 20 21 |
# File 'lib/sunspot/session_proxy/class_sharding_session_proxy.rb', line 19 def session_for_class(clazz) raise NotImplementedError end |