gearman-ruby 3.0.8 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.travis.yml +5 -0
- data/CHANGELOG.md +6 -4
- data/README.md +111 -0
- data/examples/client.rb +1 -2
- data/examples/client_reverse_nohost.rb +30 -0
- data/examples/{client_reverse.rb → client_reverse_wait.rb} +9 -11
- data/examples/worker.rb +8 -5
- data/examples/worker_reverse_string.rb +12 -17
- data/gearman-ruby.gemspec +3 -5
- data/lib/gearman.rb +17 -77
- data/lib/gearman/client.rb +129 -147
- data/lib/gearman/connection.rb +158 -0
- data/lib/gearman/connection_pool.rb +131 -0
- data/lib/gearman/exceptions.rb +24 -0
- data/lib/gearman/logging.rb +19 -0
- data/lib/gearman/packet.rb +61 -0
- data/lib/gearman/task.rb +1 -1
- data/lib/gearman/task_set.rb +67 -0
- data/lib/gearman/version.rb +1 -1
- data/lib/gearman/worker.rb +185 -412
- data/lib/gearman/worker/ability.rb +55 -0
- data/lib/gearman/worker/callbacks.rb +39 -0
- data/lib/gearman/worker/job.rb +44 -0
- data/spec/client_spec.rb +32 -20
- data/spec/connection_pool_spec.rb +55 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/task_spec.rb +10 -0
- data/spec/taskset_spec.rb +2 -2
- metadata +18 -37
- data/HOWTO +0 -146
- data/README +0 -9
- data/TODO +0 -8
- data/VERSION.yml +0 -4
- data/examples/calculus_client.rb +0 -39
- data/examples/calculus_worker.rb +0 -45
- data/examples/client.php +0 -23
- data/examples/client_background.rb +0 -14
- data/examples/client_data.rb +0 -16
- data/examples/client_epoch.rb +0 -23
- data/examples/client_exception.rb +0 -19
- data/examples/client_prefix.rb +0 -17
- data/examples/gearman_environment.sh +0 -25
- data/examples/scale_image.rb +0 -31
- data/examples/scale_image_worker.rb +0 -34
- data/examples/server.rb +0 -15
- data/examples/worker_data.rb +0 -16
- data/examples/worker_exception.rb +0 -14
- data/examples/worker_prefix.rb +0 -25
- data/examples/worker_reverse_to_file.rb +0 -18
- data/examples/worker_signals.rb +0 -36
- data/lib/gearman/taskset.rb +0 -293
- data/lib/gearman/util.rb +0 -211
- data/spec/util_spec.rb +0 -67
    
        data/README
    DELETED
    
    
    
        data/TODO
    DELETED
    
    | @@ -1,8 +0,0 @@ | |
| 1 | 
            -
            - Failover strategies
         | 
| 2 | 
            -
              - Client:
         | 
| 3 | 
            -
                 * If connected for the first time, try to connect to at least one server from the server array
         | 
| 4 | 
            -
                 * If already connected to a server, and it goes down, the client should go down as well
         | 
| 5 | 
            -
              - Worker:
         | 
| 6 | 
            -
                 * If connected for the first time, try to connect to as many servers as it can. 
         | 
| 7 | 
            -
                   Loop trough the bad servers, trying to reconnect to them as well.
         | 
| 8 | 
            -
                 * If a already connected to a server, and it goes down, wait and try to reconnect again.      
         | 
    
        data/VERSION.yml
    DELETED
    
    
    
        data/examples/calculus_client.rb
    DELETED
    
    | @@ -1,39 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
            require 'rubygems'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
            #Gearman::Util.debug = true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            # Connect to the local server (at the default port 7003) 
         | 
| 7 | 
            -
            client = Gearman::Client.new('localhost')
         | 
| 8 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            # Get something to echo
         | 
| 11 | 
            -
            puts '[client] Write a basic arithmetic operation:'
         | 
| 12 | 
            -
            input = gets
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            operations = input.chomp.scan(/\d+[\+\-\*\/]\d+/).compact
         | 
| 15 | 
            -
            puts "[client] The following operations were found: #{operations.inspect}"
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            # Setup a task for operation
         | 
| 18 | 
            -
            operations.each do |op|
         | 
| 19 | 
            -
              # Determining the operation
         | 
| 20 | 
            -
              case op
         | 
| 21 | 
            -
                when /\+/
         | 
| 22 | 
            -
                  type, data = 'addition', op.split('+') 
         | 
| 23 | 
            -
                when /\-/
         | 
| 24 | 
            -
                  type, data = 'subtraction', op.split('-') 
         | 
| 25 | 
            -
                when /\*/
         | 
| 26 | 
            -
                  type, data = 'multiplication', op.split('*') 
         | 
| 27 | 
            -
                when /\//
         | 
| 28 | 
            -
                  type, data = 'division', op.split('/') 
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
              task = Gearman::Task.new(type, Marshal.dump(data.map {|v| v.to_i}))
         | 
| 32 | 
            -
              task.on_complete {|r| puts "[client] #{type} result is: #{r}" }
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              # Sending the task to the server
         | 
| 35 | 
            -
              puts "[client] Sending values: #{data.inspect}, to the '#{type}' worker"
         | 
| 36 | 
            -
              taskset.add_task(task)
         | 
| 37 | 
            -
              taskset.wait(100)
         | 
| 38 | 
            -
            end
         | 
| 39 | 
            -
             | 
    
        data/examples/calculus_worker.rb
    DELETED
    
    | @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
            require 'rubygems'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            #Gearman::Util.debug = true
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            worker = Gearman::Worker.new('localhost')
         | 
| 8 | 
            -
            worker.reconnect_sec = 2
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            # Additon ability
         | 
| 11 | 
            -
            worker.add_ability('addition') do |data,job|
         | 
| 12 | 
            -
              values = Marshal.load(data)
         | 
| 13 | 
            -
              puts "[addition_worker] Calculating #{values.inspect}..."
         | 
| 14 | 
            -
              # sleep 5
         | 
| 15 | 
            -
              values.first + values.last
         | 
| 16 | 
            -
            end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            # Subtraction ability
         | 
| 19 | 
            -
            worker.add_ability('subtraction') do |data,job|
         | 
| 20 | 
            -
              values = Marshal.load(data)
         | 
| 21 | 
            -
              puts "[subtraction_worker] Calculating #{values.inspect}..."
         | 
| 22 | 
            -
              # sleep 5
         | 
| 23 | 
            -
              values.first - values.last
         | 
| 24 | 
            -
            end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            # Multiplication worker
         | 
| 27 | 
            -
            worker.add_ability('multiplication') do |data,job|
         | 
| 28 | 
            -
              values = Marshal.load(data)
         | 
| 29 | 
            -
              puts "[multiplication_worker] Calculating #{values.inspect}..."
         | 
| 30 | 
            -
              # sleep 5
         | 
| 31 | 
            -
              values.first * values.last
         | 
| 32 | 
            -
            end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            # Division worker
         | 
| 35 | 
            -
            worker.add_ability('division') do |data,job|
         | 
| 36 | 
            -
              values = Marshal.load(data)
         | 
| 37 | 
            -
              puts "[division_worker] Calculating #{data.inspect}..."
         | 
| 38 | 
            -
              # sleep 5
         | 
| 39 | 
            -
              values.first / values.last
         | 
| 40 | 
            -
            end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
            # Running the workers
         | 
| 43 | 
            -
            loop do
         | 
| 44 | 
            -
              worker.work
         | 
| 45 | 
            -
            end
         | 
    
        data/examples/client.php
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            <?php
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require_once 'Net/Gearman/Client.php';
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            $set = new Net_Gearman_Set();
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            function result($func, $handle, $result) {
         | 
| 8 | 
            -
                var_dump($func);
         | 
| 9 | 
            -
                var_dump($handle);
         | 
| 10 | 
            -
                var_dump($result);
         | 
| 11 | 
            -
            }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            $task = new Net_Gearman_Task('Sleep', array(
         | 
| 14 | 
            -
              'seconds' => 20
         | 
| 15 | 
            -
            ));
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            $task->attachCallback('result');
         | 
| 18 | 
            -
            $set->addTask($task);
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            $client = new Net_Gearman_Client(array('localhost:4730', 'localhost:4731'));
         | 
| 21 | 
            -
            $client->runSet($set);
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            ?>
         | 
| @@ -1,14 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            servers = ['localhost:4730',]
         | 
| 6 | 
            -
              
         | 
| 7 | 
            -
            client = Gearman::Client.new(servers)
         | 
| 8 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            task = Gearman::Task.new('sleep', 20, { :background => true })
         | 
| 11 | 
            -
            task.on_complete {|d| puts d }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            taskset.add_task(task)
         | 
| 14 | 
            -
            taskset.wait(100)
         | 
    
        data/examples/client_data.rb
    DELETED
    
    | @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
            Gearman::Util.debug = true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            servers = ['localhost:4730']
         | 
| 7 | 
            -
              
         | 
| 8 | 
            -
            client = Gearman::Client.new(servers)
         | 
| 9 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            task = Gearman::Task.new('chunked_transfer')
         | 
| 12 | 
            -
            task.on_data {|d| puts d }
         | 
| 13 | 
            -
            task.on_complete {|d| puts d }
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            taskset.add_task(task)
         | 
| 16 | 
            -
            taskset.wait(100)
         | 
    
        data/examples/client_epoch.rb
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/env ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # Client using Gearman SUBMIT_JOB_EPOCH (currently requires the gearmand branch lp:~jewart/gearmand/scheduled_jobs_support/)
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require 'rubygems'
         | 
| 6 | 
            -
            require '../lib/gearman'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            (1..100).each do 
         | 
| 9 | 
            -
               # Connect to the local server (at the default port 4730) 
         | 
| 10 | 
            -
               client = Gearman::Client.new('localhost')
         | 
| 11 | 
            -
               taskset = Gearman::TaskSet.new(client)
         | 
| 12 | 
            -
             | 
| 13 | 
            -
               data = rand(36**8).to_s(36)
         | 
| 14 | 
            -
               # Set scheduled time to some time in the future
         | 
| 15 | 
            -
               time = Time.now() + rand(10)
         | 
| 16 | 
            -
               puts "Time as seconds: #{time.to_i}" 
         | 
| 17 | 
            -
               task = Gearman::Task.new("reverse_string", data)
         | 
| 18 | 
            -
               task.schedule(time)
         | 
| 19 | 
            -
             | 
| 20 | 
            -
               # Sending the task to the server
         | 
| 21 | 
            -
               puts "[client] Sending task: #{task.inspect}, to the 'reverse_string' worker"
         | 
| 22 | 
            -
               taskset.add_task(task)
         | 
| 23 | 
            -
            end
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            require '../lib/gearman'
         | 
| 3 | 
            -
            Gearman::Util.debug = true
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            servers = ['localhost:4730']
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            client = Gearman::Client.new(servers)
         | 
| 8 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            task = Gearman::Task.new('fail_with_exception', "void")
         | 
| 11 | 
            -
            task.retry_count = 2
         | 
| 12 | 
            -
            task.on_complete {|d| puts d }
         | 
| 13 | 
            -
            task.on_exception {|ex| puts "This should never be called" }
         | 
| 14 | 
            -
            task.on_warning {|warning| puts "WARNING: #{warning}" }
         | 
| 15 | 
            -
            task.on_retry { puts "PRE-RETRY HOOK: retry no. #{task.retries_done}" }
         | 
| 16 | 
            -
            task.on_fail { puts "TASK FAILED, GIVING UP" }
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            taskset.add_task(task)
         | 
| 19 | 
            -
            taskset.wait(100)
         | 
    
        data/examples/client_prefix.rb
    DELETED
    
    | @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
            Gearman::Util.debug = true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            servers = ['localhost:4730', 'localhost:4731']
         | 
| 7 | 
            -
              
         | 
| 8 | 
            -
            ability_name_with_prefix = Gearman::Util.ability_name_with_prefix("test","sleep")
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            client = Gearman::Client.new(servers)
         | 
| 11 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            task = Gearman::Task.new(ability_name_with_prefix, 20)
         | 
| 14 | 
            -
            task.on_complete {|d| puts d }
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            taskset.add_task(task)
         | 
| 17 | 
            -
            taskset.wait(100)
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            #!/bin/bash  
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # Start Gearmand
         | 
| 4 | 
            -
            echo ' + Starting Gearmand'
         | 
| 5 | 
            -
            gearmand --daemon --pidfile=/tmp/gearmand.pid
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            # Start the client and the worker(s)
         | 
| 8 | 
            -
            echo ' + Starting calculus_worker.rb'
         | 
| 9 | 
            -
            ruby calculus_worker.rb & 
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            sleep 3
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            echo ' + Starting calculus_client.rb'
         | 
| 14 | 
            -
            ruby calculus_client.rb 
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            echo ' +++ Example finished +++ '
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            # Stop Gearmand
         | 
| 19 | 
            -
            echo ' - Stopping Gearmand'
         | 
| 20 | 
            -
            kill -9 `cat /tmp/gearmand.pid`
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            # Stop the workers
         | 
| 23 | 
            -
            echo ' - Stopping calculus_worker.rb'
         | 
| 24 | 
            -
            kill -9 `ps ax|grep calculus_worker|grep ruby|awk -F' ' '{print $1}'`
         | 
| 25 | 
            -
             | 
    
        data/examples/scale_image.rb
    DELETED
    
    | @@ -1,31 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            $: << '../lib'
         | 
| 4 | 
            -
            require 'gearman'
         | 
| 5 | 
            -
            require 'optparse'
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            servers = 'localhost:4730'
         | 
| 8 | 
            -
            format = 'PNG'
         | 
| 9 | 
            -
            width, height = 100, 100
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            opts = OptionParser.new
         | 
| 12 | 
            -
            opts.banner = "Usage: #{$0} [options] <input> <output>"
         | 
| 13 | 
            -
            opts.on('-f FORMAT', '--format', 'Scaled image format') { format }
         | 
| 14 | 
            -
            opts.on('-h HEIGHT', '--height', 'Scaled image height') { height }
         | 
| 15 | 
            -
            opts.on('-s SERVERS', '--servers',
         | 
| 16 | 
            -
              'Servers, comma-separated host:port') { servers }
         | 
| 17 | 
            -
            opts.on('-w WIDTH', '--width', 'Scaled image width') { width }
         | 
| 18 | 
            -
            opts.parse!
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            if ARGV.size != 2
         | 
| 21 | 
            -
              $stderr.puts opts.banner
         | 
| 22 | 
            -
              exit 1
         | 
| 23 | 
            -
            end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            client = Gearman::Client.new(servers.split(','), 'example')
         | 
| 26 | 
            -
            taskset = Gearman::TaskSet.new(client)
         | 
| 27 | 
            -
            arg = [width, height, format, File.read(ARGV[0])].join("\0")
         | 
| 28 | 
            -
            task = Gearman::Task.new('scale_image', arg)
         | 
| 29 | 
            -
            task.on_complete {|d| File.new(ARGV[1],'w').write(d) }
         | 
| 30 | 
            -
            taskset.add_task(task)
         | 
| 31 | 
            -
            taskset.wait(10)
         | 
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            #!/usr/bin/ruby
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            $: << '../lib'
         | 
| 4 | 
            -
            require 'gearman'
         | 
| 5 | 
            -
            require 'optparse'
         | 
| 6 | 
            -
            require 'RMagick'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            Gearman::Util.debug = true
         | 
| 9 | 
            -
            servers = 'localhost:7003'
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            opts = OptionParser.new
         | 
| 12 | 
            -
            opts.banner = "Usage: #{$0} [options]"
         | 
| 13 | 
            -
            opts.on('-s SERVERS', '--servers',
         | 
| 14 | 
            -
              'Job servers, comma-separated host:port') { servers }
         | 
| 15 | 
            -
            opts.parse!
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            worker = Gearman::Worker.new(servers.split(','), 'example')
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            worker.add_ability('scale_image') do |data,job|
         | 
| 20 | 
            -
              width, height, format, data = data.split("\0", 4)
         | 
| 21 | 
            -
              width = width.to_f
         | 
| 22 | 
            -
              height = height.to_f
         | 
| 23 | 
            -
              image = Magick::Image.from_blob(data)[0]
         | 
| 24 | 
            -
              orig_ratio = image.columns.to_f / image.rows
         | 
| 25 | 
            -
              new_ratio = width / height
         | 
| 26 | 
            -
              w = new_ratio < orig_ratio ? width : orig_ratio / new_ratio * width
         | 
| 27 | 
            -
              h = new_ratio > orig_ratio ? height : new_ratio / orig_ratio * height
         | 
| 28 | 
            -
              puts "Got #{image.inspect}; resizing to #{w}x#{h} #{format}"
         | 
| 29 | 
            -
              image.resize!(w, h)
         | 
| 30 | 
            -
              image.format = format
         | 
| 31 | 
            -
              image.to_blob
         | 
| 32 | 
            -
            end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            loop { worker.work }
         | 
    
        data/examples/server.rb
    DELETED
    
    | @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            # require 'gearman'
         | 
| 3 | 
            -
            # require 'gearman/server'
         | 
| 4 | 
            -
            require '../lib/gearman'
         | 
| 5 | 
            -
            require '../lib/gearman/server'
         | 
| 6 | 
            -
            require 'pp'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            Gearman::Util.debug = true
         | 
| 9 | 
            -
            w = Gearman::Server.new('localhost:4730')
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            loop {
         | 
| 12 | 
            -
              pp "Status: ", w.status
         | 
| 13 | 
            -
              pp "Workers: ", w.workers
         | 
| 14 | 
            -
              sleep 5
         | 
| 15 | 
            -
            }
         | 
    
        data/examples/worker_data.rb
    DELETED
    
    | @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            require '../lib/gearman'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            Gearman::Util.debug = true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            servers = ['localhost:4730']
         | 
| 7 | 
            -
            worker = Gearman::Worker.new(servers)
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            worker.add_ability('chunked_transfer') do |data, job|
         | 
| 10 | 
            -
              5.times do |i|
         | 
| 11 | 
            -
                sleep 1
         | 
| 12 | 
            -
                job.send_data("CHUNK #{i}")
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
              "EOD"
         | 
| 15 | 
            -
            end
         | 
| 16 | 
            -
            loop { worker.work }
         | 
| @@ -1,14 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            require '../lib/gearman'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            Gearman::Util.debug = true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            servers = ['localhost:4730']
         | 
| 7 | 
            -
            w = Gearman::Worker.new(servers)
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            # Add a handler for a "sleep" function that takes a single argument, the
         | 
| 10 | 
            -
            # number of seconds to sleep before reporting success.
         | 
| 11 | 
            -
            w.add_ability('fail_with_exception') do |data,job|
         | 
| 12 | 
            -
              raise Exception.new("Exception in worker (args: #{data.inspect})")
         | 
| 13 | 
            -
            end
         | 
| 14 | 
            -
            loop { w.work }
         | 
    
        data/examples/worker_prefix.rb
    DELETED
    
    | @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Gearman::Util.debug = true
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            servers = ['localhost:4730', 'localhost:4731']
         | 
| 8 | 
            -
            w = Gearman::Worker.new(servers)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            ability_name_with_prefix = Gearman::Util.ability_name_with_prefix("test","sleep")
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            # Add a handler for a "sleep" function that takes a single argument, the
         | 
| 13 | 
            -
            # number of seconds to sleep before reporting success.
         | 
| 14 | 
            -
            w.add_ability(ability_name_with_prefix) do |data,job|
         | 
| 15 | 
            -
             seconds = data
         | 
| 16 | 
            -
             (1..seconds.to_i).each do |i|
         | 
| 17 | 
            -
               sleep 1
         | 
| 18 | 
            -
               print i
         | 
| 19 | 
            -
               # Report our progress to the job server every second.
         | 
| 20 | 
            -
               job.report_status(i, seconds)
         | 
| 21 | 
            -
             end
         | 
| 22 | 
            -
             # Report success.
         | 
| 23 | 
            -
             true
         | 
| 24 | 
            -
            end
         | 
| 25 | 
            -
            loop { w.work }
         | 
| @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            servers = ['localhost:4730']
         | 
| 6 | 
            -
            w = Gearman::Worker.new(servers)
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            # Add a handler for a "sleep" function that takes a single argument, the
         | 
| 9 | 
            -
            # number of seconds to sleep before reporting success.
         | 
| 10 | 
            -
            w.add_ability('reverse_to_file') do |data,job|
         | 
| 11 | 
            -
              puts "Data: #{data.inspect}"
         | 
| 12 | 
            -
             word, file = data.split("\0")
         | 
| 13 | 
            -
             puts "Word: #{word}"
         | 
| 14 | 
            -
             puts "File: #{file}"
         | 
| 15 | 
            -
             # Report success.
         | 
| 16 | 
            -
             true
         | 
| 17 | 
            -
            end
         | 
| 18 | 
            -
            loop { w.work }
         | 
    
        data/examples/worker_signals.rb
    DELETED
    
    | @@ -1,36 +0,0 @@ | |
| 1 | 
            -
            require 'rubygems'
         | 
| 2 | 
            -
            #require 'gearman'
         | 
| 3 | 
            -
            require '../lib/gearman'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Gearman::Util.debug = true
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            servers = ['localhost:4730', 'localhost:4731']
         | 
| 8 | 
            -
            w = Gearman::Worker.new(servers)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            # Add a handler for a "sleep" function that takes a single argument, the
         | 
| 11 | 
            -
            # number of seconds to sleep before reporting success.
         | 
| 12 | 
            -
            w.add_ability('sleep') do |data,job|
         | 
| 13 | 
            -
             seconds = data
         | 
| 14 | 
            -
             (1..seconds.to_i).each do |i|
         | 
| 15 | 
            -
               sleep 1
         | 
| 16 | 
            -
               Gearman::Util.logger.info i
         | 
| 17 | 
            -
               # Report our progress to the job server every second.
         | 
| 18 | 
            -
               job.report_status(i, seconds)
         | 
| 19 | 
            -
             end
         | 
| 20 | 
            -
             # Report success.
         | 
| 21 | 
            -
             true
         | 
| 22 | 
            -
            end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            # Trap signals while is working
         | 
| 25 | 
            -
            %w(HUP USR1 ALRM TERM).each do |signal|
         | 
| 26 | 
            -
              trap(signal) do
         | 
| 27 | 
            -
                puts "Received signal #{signal} - setting worker_enabled to false. Worker status is [#{w.status}]"
         | 
| 28 | 
            -
                w.worker_enabled = false
         | 
| 29 | 
            -
                if w.status == :waiting
         | 
| 30 | 
            -
                  trap(signal, "DEFAULT")
         | 
| 31 | 
            -
                  Process.kill( signal, $$ )
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
            end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            loop { w.work or break }
         |