0.07
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Library for the Gearman distributed job system
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

gearman-ruby

Travis CI Build Status

What is this?

This is a pure-Ruby library for the gearman distributed job system.

What needs to be done?

More testing, some code cleanup.

What's in this?

Right now, this library has both client and worker support for Ruby apps.

Getting Started

Client

A very simple client that submits a "sleep" job and waits for 100 seconds for results:

require 'rubygems'
require 'gearman'

servers = ['localhost:4730', 'localhost:4731']

client = Gearman::Client.new(servers)
taskset = Gearman::TaskSet.new(client)

task = Gearman::Task.new('sleep', 20)
task.on_complete {|d| puts d }

taskset.add_task(task)
taskset.wait(100)

Worker

A worker that will process jobs in the 'sleep' queue:

require 'rubygems'
require 'logger'
require 'gearman'

servers = ['localhost:4730']

w = Gearman::Worker.new(servers)
logger = Logger.new(STDOUT)

# Add a handler for a "sleep" function that takes a single argument, the
# number of seconds to sleep before reporting success.
w.add_ability("sleep") do |data,job|
 seconds = 10
 logger.info "Sleeping for #{seconds} seconds"
 (1..seconds.to_i).each do |i|
   sleep 1
   # Report our progress to the job server every second.
   job.report_status(i, seconds)
 end
 # Report success.
 true
end

loop { w.work }

Authors

Contributors (past and present)

  • Kim Altintop
  • Josh Black (raskchanky)
  • Colin Curtin (perplexes)
  • Brian Cobb (bcobb)
  • Pablo A. Delgado (pablete)
  • Daniel Erat
  • Antonio Garrote
  • Stefan Kaes (skaes)
  • Ladislav Martincik
  • Mauro Pompilio (malditogeek)
  • Lee Reilly (leereilly)
  • Clint Shryock (catsby)
  • Andy Triggs (andyt)

License

Released under the MIT license, originally developed by XING AG. See the LICENSE file for further details.