Class: Beaneater::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/beaneater/job/record.rb

Overview

Represents job related commands.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, res) ⇒ Job

Initializes a new job object.

Parameters:

  • res (Hash{Symbol => String,Number})

    Result from beanstalkd response



22
23
24
25
26
27
# File 'lib/beaneater/job/record.rb', line 22

def initialize(client, res)
  @client     = client
  @id         = res[:id]
  @body       = res[:body]
  @reserved   = res[:status] == 'RESERVED'
end

Instance Attribute Details

#bodyString

Returns the job's body.

Returns:

  • (String)

    the job's body.



15
# File 'lib/beaneater/job/record.rb', line 15

attr_reader :id, :body, :reserved, :client

#clientObject

Returns the value of attribute client.



15
# File 'lib/beaneater/job/record.rb', line 15

attr_reader :id, :body, :reserved, :client

#idInteger

Returns id for the job.

Returns:

  • (Integer)

    id for the job.



15
16
17
# File 'lib/beaneater/job/record.rb', line 15

def id
  @id
end

#reservedBoolean

Returns whether the job has been reserved.

Returns:

  • (Boolean)

    whether the job has been reserved.



15
# File 'lib/beaneater/job/record.rb', line 15

attr_reader :id, :body, :reserved, :client

Instance Method Details

#bury(options = {}) ⇒ Hash{Symbol => String,Number}

Sends command to bury a reserved job.

Examples:

@job.bury({:pri => 100})
  # => {:status=>"BURIED", :body=>nil}

Parameters:

  • options (Hash{Symbol => Integer}) (defaults to: {})

    Settings to bury job

Options Hash (options):

  • pri (Integer)

    Assign new priority to job

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



40
41
42
43
44
45
# File 'lib/beaneater/job/record.rb', line 40

def bury(options={})
  options = { :pri => stats.pri }.merge(options)
  with_reserved("bury #{id} #{options[:pri]}") do
    @reserved = false
  end
end

#delayInteger

Returns the delay of this job

Examples:

@beaneater.jobs.find(123).delay
  # => 5

Returns:

  • (Integer)

    The delay of this job



180
181
182
# File 'lib/beaneater/job/record.rb', line 180

def delay
  self.stats.delay
end

#deleteHash{Symbol => String,Number}

Sends command to delete a job.

Examples:

@beaneater.jobs.find(123).delete
  # => {:status=>"DELETED", :body=>nil}

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



85
86
87
# File 'lib/beaneater/job/record.rb', line 85

def delete
  transmit("delete #{id}") { @reserved = false }
end

#exists?Boolean

Check if the job still exists.

Examples:

@beaneater.jobs.find(123).exists?

Returns:

  • (Boolean)

    Returns true if the job still exists



132
133
134
135
136
# File 'lib/beaneater/job/record.rb', line 132

def exists?
  !self.stats.nil?
rescue Beaneater::NotFoundError
  false
end

#kickHash{Symbol => String,Number}

Sends command to kick a buried job.

Examples:

@beaneater.jobs.find(123).kick
  # => {:status=>"KICKED", :body=>nil}

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



97
98
99
# File 'lib/beaneater/job/record.rb', line 97

def kick
  transmit("kick-job #{id}")
end

#priInteger

Returns the pri of this job

Examples:

@beaneater.jobs.find(123).pri
  # => 1

Returns:

  • (Integer)

    The pri of this job



169
170
171
# File 'lib/beaneater/job/record.rb', line 169

def pri
  self.stats.pri
end

#release(options = {}) ⇒ Hash{Symbol => String,Number}

Sends command to release a job back to ready state.

Examples:

@beaneater.jobs.find(123).release(:pri => 10, :delay => 5)
  # => {:status=>"RELEASED", :body=>nil}

Parameters:

  • options (Hash{String => Integer}) (defaults to: {})

    Settings to release job

Options Hash (options):

  • pri (Integer)

    Assign new priority to job

  • delay (Integer)

    Assign new delay to job

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



58
59
60
61
62
63
# File 'lib/beaneater/job/record.rb', line 58

def release(options={})
  options = { :pri => stats.pri, :delay => stats.delay }.merge(options)
  with_reserved("release #{id} #{options[:pri]} #{options[:delay]}") do
    @reserved = false
  end
end

#reserved?Boolean

Check if job is currently in a reserved state.

Examples:

@beaneater.jobs.find(123).reserved?

Returns:

  • (Boolean)

    Returns true if the job is in a reserved state



121
122
123
# File 'lib/beaneater/job/record.rb', line 121

def reserved?
  @reserved || self.stats.state == "reserved"
end

#statsBeaneater::StatStruct

Sends command to get stats about job.

Examples:

@beaneater.jobs.find(123).stats
@job.stats.tube # => "some-tube"

Returns:



109
110
111
112
# File 'lib/beaneater/job/record.rb', line 109

def stats
  res = transmit("stats-job #{id}")
  StatStruct.from_hash(res[:body])
end

#to_sString Also known as: inspect

Returns string representation of job

Examples:

@beaneater.jobs.find(123).to_s
@beaneater.jobs.find(123).inspect

Returns:

  • (String)

    string representation



191
192
193
# File 'lib/beaneater/job/record.rb', line 191

def to_s
  "#<Beaneater::Job id=#{id} body=#{body.inspect}>"
end

#touchHash{Symbol => String,Number}

Sends command to touch job which extends the ttr.

Examples:

@beaneater.jobs.find(123).touch
  # => {:status=>"TOUCHED", :body=>nil}

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



73
74
75
# File 'lib/beaneater/job/record.rb', line 73

def touch
  with_reserved("touch #{id}")
end

#transmit(cmd, &block) ⇒ Hash{Symbol => String,Number} (protected)

Transmit command to beanstalkd instance and fetch response.

Examples:

transmit('stats')
transmit('stats') { 'success' }

Parameters:

  • cmd (String)

    Beanstalkd command to send.

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.



206
207
208
209
210
# File 'lib/beaneater/job/record.rb', line 206

def transmit(cmd, &block)
  res = client.connection.transmit(cmd)
  yield if block_given?
  res
end

#ttrInteger

Returns the ttr of this job

Examples:

@beaneater.jobs.find(123).ttr
  # => 123

Returns:

  • (Integer)

    The ttr of this job



158
159
160
# File 'lib/beaneater/job/record.rb', line 158

def ttr
  @ttr ||= self.stats.ttr
end

#tubeString

Returns the name of the tube this job is in

Examples:

@beaneater.jobs.find(123).tube
  # => "some-tube"

Returns:

  • (String)

    The name of the tube for this job



146
147
148
# File 'lib/beaneater/job/record.rb', line 146

def tube
  @tube ||= self.stats.tube
end

#with_reserved(cmd, &block) ⇒ Hash{Symbol => String,Number} (protected)

Transmits a command which requires the job to be reserved.

Examples:

with_reserved("bury 26") { @reserved = false }

Parameters:

  • cmd (String)

    Beanstalkd command to send.

Returns:

  • (Hash{Symbol => String,Number})

    Beanstalkd response for the command.

Raises:



220
221
222
223
# File 'lib/beaneater/job/record.rb', line 220

def with_reserved(cmd, &block)
  raise JobNotReserved unless reserved?
  transmit(cmd, &block)
end