class Bubbles::DirWatcher

Constants

DestinationIsNotDirectory

Attributes

command_queue[R]
config[R]

Public Class Methods

new(config:, command_queue:) click to toggle source
# File lib/bubbles/dir_watcher.rb, line 6
def initialize(config:, command_queue:)
  @config        = config
  @command_queue = command_queue
end

Public Instance Methods

call() click to toggle source
# 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
inspect() click to toggle source
# File lib/bubbles/dir_watcher.rb, line 31
def inspect
  "#<#{self.class.name} source_dir: #{source_dir}, processing_dir: #{processing_dir}>"
end
source_dir_files() click to toggle source
# 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

Private Instance Methods

check_processing_dir_existence() click to toggle source
# File lib/bubbles/dir_watcher.rb, line 49
def check_processing_dir_existence
  raise DestinationIsNotDirectory unless processing_dir.directory?
end
check_source_dir_existence() click to toggle source
# File lib/bubbles/dir_watcher.rb, line 45
def check_source_dir_existence
  raise DestinationIsNotDirectory unless source_dir.directory?
end