Sha256: 75b4a819b3e19dbc045613ff6b27b63b346f897718fd3cec16478df554b03ce4

Contents?: true

Size: 1.8 KB

Versions: 8

Compression:

Stored size: 1.8 KB

Contents

#!/usr/bin/env ruby
# encoding: utf-8

require "bundler/setup"
require 'rails'
require 'daemons'
require "xapian_db"
require 'yaml'
require 'rails/railtie' # execute xapian_db railtie

# daemon script to manage the beanstalk worker daemon
# @author Gernot Kogler
module XapianDb
  class BeanstalkWorker

    def process_requests

      Rails.logger.info "XapianDb beanstalk worker: initializing..."

      url = XapianDb::Config.beanstalk_daemon_url
      beanstalk = Beanstalk::Pool.new([url])
      worker    = XapianDb::IndexWriters::BeanstalkWorker.new
      Rails.logger.info "XapianDb beanstalk worker: ready"

      loop do
        job = beanstalk.reserve
        begin
          params = YAML::load job.body
          Rails.logger.info "XapianDb beanstalk worker: executing task #{params}"
          task = params.delete :task
          worker.send task, params
        rescue Exception => ex
          Rails.logger.error "XapianDb beanstalk worker: could not process #{job.body} (#{ex})"
        end
        job.delete
      end
    end
  end
end

# =========================================================================================
# daemon setup
# =========================================================================================
dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
pids_dir = File.join(dir, 'tmp', 'pids')
FileUtils.makedirs pids_dir unless File.exists?(pids_dir)

daemon_options = {
  :multiple   => false,
  :dir_mode   => :normal,
  :dir        => pids_dir,
  :backtrace  => true
}

Daemons.run_proc('beanstalk_worker', daemon_options) do
  if ARGV.include?('--')
    ARGV.slice! 0..ARGV.index('--')
  else
    ARGV.clear
  end

  Dir.chdir dir
  require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
  XapianDb::BeanstalkWorker.new.process_requests
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
xapian_db-1.1.1 lib/generators/templates/beanstalk_worker
xapian_db-1.1 lib/generators/templates/beanstalk_worker
xapian_db-1.0 lib/generators/templates/beanstalk_worker
xapian_db-0.5.15 lib/generators/templates/beanstalk_worker
xapian_db-0.5.14 lib/generators/templates/beanstalk_worker
xapian_db-0.5.13 lib/generators/templates/beanstalk_worker
xapian_db-0.5.12 lib/generators/templates/beanstalk_worker
xapian_db-0.5.11 lib/generators/templates/beanstalk_worker