Sha256: d5f40afb03f873791e74e2f45221978da82a4b108a70f225ec5e17827250d68b
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
module Tire module Model module AsyncCallbacks ID_CONVERSION = { 'Moped::BSON::ObjectId' => :to_s } def self.included(base) # Bind after save or create callback if base.respond_to? :after_commit base.send :after_commit, :async_tire_save_index elsif base.respond_to? :after_save base.send :after_save, :async_tire_save_index end # Bind before destroy callback if base.respond_to? :before_destroy base.send :before_destroy, :async_tire_delete_index end end private def async_tire_save_index async_tire_callback :update end def async_tire_delete_index async_tire_callback :delete end def async_tire_callback(type) case TireAsyncIndex.engine when :sidekiq TireAsyncIndex::Workers::SidekiqUpdateIndex. perform_async type, self.class.name, async_tire_object_id when :resque Resque.enqueue TireAsyncIndex::Workers::ResqueUpdateIndex, type, self.class.name, async_tire_object_id else case type when :update tire.update_index when :delete tire.index.remove self end end end def async_tire_object_id if (method = ID_CONVERSION[self.id.class.name]) self.id.send(method) else self.id end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tire_async_index-0.2.1 | lib/tire/model/async_callbacks.rb |
tire_async_index-0.2.0 | lib/tire/model/async_callbacks.rb |