Module: Philiprehberger::FileWatcher

Defined in:
lib/philiprehberger/file_watcher.rb,
lib/philiprehberger/file_watcher/change.rb,
lib/philiprehberger/file_watcher/version.rb,
lib/philiprehberger/file_watcher/watcher.rb

Defined Under Namespace

Classes: Change, Error, Watcher

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.watch(paths, interval: 1.0, glob: '**/*', exclude: [], debounce: nil) {|Change| ... } ⇒ void

This method returns an undefined value.

Watch paths for file system changes (blocking).

Polls the file system at the given interval and yields arrays of Change objects whenever created, modified, or deleted files are detected.

Parameters:

  • paths (Array<String>, String)

    directories or files to watch

  • interval (Float) (defaults to: 1.0)

    polling interval in seconds (default: 1.0)

  • glob (String) (defaults to: '**/*')

    glob pattern for matching files (default: “*/”)

  • exclude (Array<String>) (defaults to: [])

    glob patterns to exclude from watching (default: [])

  • debounce (Float, nil) (defaults to: nil)

    debounce interval in seconds (default: nil)

Yields:

  • (Change)

    called with a change on each detected file change



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/philiprehberger/file_watcher.rb', line 23

def self.watch(paths, interval: 1.0, glob: '**/*', exclude: [], debounce: nil, &block)
  raise ArgumentError, 'a block is required' unless block

  watcher = Watcher.new(paths, interval: interval, glob: glob, exclude: exclude, debounce: debounce)
  watcher.on(:any, &block)
  watcher.start

  # Block the calling thread until interrupted
  sleep
rescue Interrupt
  watcher.stop
end