Class: Karousel

Inherits:
Object
  • Object
show all
Defined in:
lib/karousel.rb,
lib/karousel/job.rb,
lib/karousel/errors.rb,
lib/karousel/version.rb,
lib/karousel/client_job.rb

Defined Under Namespace

Classes: ClientJob, Job, NotImplementedError

Constant Summary collapse

STATUS =
{ init: 1, sent: 2, success: 3, failure: 4 }
VERSION =
'0.9.14'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, size = 10, time_interval = 0) ⇒ Karousel

Returns a new instance of Karousel.



12
13
14
15
16
17
# File 'lib/karousel.rb', line 12

def initialize(klass, size=10, time_interval = 0)
  @klass = klass
  @size = size
  @time_interval = time_interval
  @seats = []
end

Instance Attribute Details

#seatsObject (readonly)

Returns the value of attribute seats.



5
6
7
# File 'lib/karousel.rb', line 5

def seats
  @seats
end

#sizeObject (readonly)

Returns the value of attribute size.



5
6
7
# File 'lib/karousel.rb', line 5

def size
  @size
end

#time_intervalObject (readonly)

Returns the value of attribute time_interval.



5
6
7
# File 'lib/karousel.rb', line 5

def time_interval
  @time_interval
end

Class Method Details

.versionObject



8
9
10
# File 'lib/karousel.rb', line 8

def self.version
  VERSION
end

Instance Method Details

#populateObject



19
20
21
22
23
24
25
# File 'lib/karousel.rb', line 19

def populate
  new_seats = []
  @klass.populate(@size - @seats.size).each do |inst|
    new_seats << Job.new(inst)
  end
  @seats = new_seats + @seats
end

#run(&block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/karousel.rb', line 27

def run(&block)
  populate
  until @seats.empty? do
    send_request
    sleep(@time_interval)
    check_response
    yield if block
    populate
  end
end