Class: Conveyor::Belt

Inherits:
Object
  • Object
show all
Includes:
Output
Defined in:
lib/conveyor/belt.rb

Overview

Does not persist, do not use any class variables

Constant Summary collapse

SETTLE_TIME =
30

Constants included from Output

Output::MSGLVLS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Output

#announce, #debug, #error, #info, #logfile, #loglvl, #notify, #output, #say, #send_notifications, #should_log?, #warning

Constructor Details

#initialize(watch_path, command_file) ⇒ Belt

, opts = {})



10
11
12
13
14
# File 'lib/conveyor/belt.rb', line 10

def initialize(watch_path, command_file)#, opts = {})
  @work_dir = watch_path
  @command_file = command_file
  @queue = Conveyor::Queue.new
end

Instance Attribute Details

#command_fileObject (readonly)

Returns the value of attribute command_file.



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

def command_file
  @command_file
end

Instance Method Details

#checkObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/conveyor/belt.rb', line 30

def check
  job = @queue.reserve
  # puts job.inspect
  if job && (Time.now - job[:updated_at]) > SETTLE_TIME
    Worker.new(job[:file], @command_file).start
    # Worker done remove it from the queue
    @queue.pop(job[:file])
  else
    # File not ready yet
    @queue.unreserve(job[:file]) unless job.nil?
  end
rescue => e
  puts e.message
  puts e.backtrace
end

#countObject



16
17
18
# File 'lib/conveyor/belt.rb', line 16

def count
  @queue.count
end

#nameObject



20
21
22
# File 'lib/conveyor/belt.rb', line 20

def name
  File.basename(@command_file, '.worker')
end

#touch(files) ⇒ Object



24
25
26
27
28
# File 'lib/conveyor/belt.rb', line 24

def touch(files)
  files.each do |f|
    @queue.push(f)
  end
end