Class: Bubbles::DirWatcher

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/bubbles/dir_watcher.rb

Constant Summary collapse

DestinationIsNotDirectory =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initialize(config:, command_queue:) ⇒ DirWatcher

Returns a new instance of DirWatcher.



6
7
8
9
# File 'lib/bubbles/dir_watcher.rb', line 6

def initialize(config:, command_queue:)
  @config        = config
  @command_queue = command_queue
end

Instance Method Details

#callObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/bubbles/dir_watcher.rb', line 11

def call
  check_source_dir_existence
  check_processing_dir_existence

  source_dir_files
    .last(num_of_files_to_schedule)
    .each do |file|
      bfile = BubbliciousFile.new(file: file, config: config)
      bfile.copy_to_processing_dir

      uploader_classes.each do |uploader_class|
        command_queue << uploader_class.new(bfile: bfile, command_queue: command_queue, config: config)
      end

      command_queue << bfile.public_method(:remove_file)
    end

  command_queue << self
end

#inspectObject



31
32
33
# File 'lib/bubbles/dir_watcher.rb', line 31

def inspect
  "#<#{self.class.name} source_dir: #{source_dir}, processing_dir: #{processing_dir}>"
end

#source_dir_filesObject



35
36
37
38
39
# File 'lib/bubbles/dir_watcher.rb', line 35

def source_dir_files
  Dir
    .glob(source_dir.join('**/*').to_s)
    .select { |x| Pathname.new(x).file? }
end