Sha256: 9efa5dfca4ca89739a9243f3c4ef521d8c1d3e3ef72cd7e52a25bd18898cb619

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 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, commit=true)
          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, commit=true)
          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

9 entries across 9 versions & 1 rubygems

Version Path
xapian_db-1.2.2.2 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.2.2.1 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.2.2 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.2.1.1 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.2.1 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.2.0 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.1.4 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.1.3 lib/xapian_db/index_writers/beanstalk_writer.rb
xapian_db-1.1.2 lib/xapian_db/index_writers/beanstalk_writer.rb