Sha256: d0efd200281a2c1fc7ce0898cf6e3c5519bec5662dfd2ce9999731e6233f4a49

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

# encoding: utf-8

# This writer puts reindex requests into a stalker queue. If you want
# to use this writer, you must install beanstalkd and the stalker gem.
# This writer can only be used inside a Rails app.
# See https://github.com/adamwiggins/stalker for more info
# @author Gernot Kogler

require 'beanstalk-client'

module XapianDb
  module IndexWriters

    class BeanstalkWriter

      class << self

        # Update an object in the index
        # @param [Object] obj An instance of a class with a blueprint configuration
        def index(obj)
          beanstalk.put( {:task => "index_task", :class => obj.class.name, :id => obj.id }.to_yaml )
        end

        # Remove an object from the index
        # @param [String] xapian_id The document id
        def delete_doc_with(xapian_id)
          beanstalk.put( { :task => "delete_doc_task", :xapian_id => xapian_id }.to_yaml )
        end

        # Reindex all objects of a given class
        # @param [Class] klass The class to reindex
        def reindex_class(klass, options={})
          beanstalk.put( { :task => "reindex_class_task", :class => klass.name }.to_yaml )
        end

        private

        def beanstalk
          @beanstalk ||= Beanstalk::Pool.new([XapianDb::Config.beanstalk_daemon_url])
        end

      end

    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
xapian_db-1.1.1 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.1 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.0 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-0.5.15 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-0.5.14 lib/xapian_db/index_writers/beanstalk_writer.rb