public
Description: The File System State Monitor keeps track of the state of any number of paths and will fire events when said state changes (create/update/delete). FSSM supports using FSEvents on MacOS (with ruby 1.8), Inotify on GNU/Linux, and polling anywhere else.
Homepage:
Clone URL: git://github.com/ttilley/fssm.git
Travis Tilley (author)
Sun Dec 13 17:46:19 -0800 2009
fssm /
name age message
file .document Sun Aug 09 06:43:47 -0700 2009 Initial commit to fsstate. [Travis Tilley]
file .gitignore Sun Dec 13 15:55:29 -0800 2009 restructure [Travis Tilley]
file LICENSE Sun Aug 09 06:43:47 -0700 2009 Initial commit to fsstate. [Travis Tilley]
file README.markdown Sat Aug 29 23:02:07 -0700 2009 lets try this again [Travis Tilley]
file Rakefile Sun Dec 13 08:41:31 -0800 2009 ...i never actually made use of yard [Travis Tilley]
file VERSION.yml Sun Dec 13 17:45:17 -0800 2009 Version bump to 0.1.0 [Travis Tilley]
file example.rb Sun Dec 13 17:26:33 -0800 2009 whitespace, inotify [Travis Tilley]
file fssm.gemspec Sun Dec 13 17:46:19 -0800 2009 gemspec [Travis Tilley]
directory lib/ Sun Dec 13 17:44:24 -0800 2009 forgot this [Travis Tilley]
directory profile/ Sun Dec 13 17:26:33 -0800 2009 whitespace, inotify [Travis Tilley]
directory spec/ Sun Dec 13 17:26:33 -0800 2009 whitespace, inotify [Travis Tilley]
README.markdown

Monitor API

There are three ways you can run the monitor.

  1. call monitor with a path parameter, and define callbacks in a block
  2. call monitor with a block to configure multiple paths and callbacks
  3. create a monitor object and run each step manually

Monitor with path

This form watches one path, and enters the run loop automatically. The first parameter is the path to watch, and the second parameter is an optional glob pattern or array of glob patterns that a file must match in order to trigger a callback. The default glob, if ommitted, is '**/*'.

FSSM.monitor('/some/directory/', '**/*') do
  update {|base, relative|}
  delete {|base, relative|}
  create {|base, relative|}
end

Monitor with block

This form watches one or more paths, and enters the run loop automatically. The glob configuration call can be ommitted, and defaults to '**/*'.

FSSM.monitor do
  path '/some/directory/' do
    glob '**/*.yml'

    update {|base, relative|}
    delete {|base, relative|}
    create {|base, relative|}
  end

  path '/some/other/directory/' do
    update {|base, relative|}
    delete {|base, relative|}
    create {|base, relative|}
  end
end

Monitor object

This form doesn't enter the run loop automatically.

monitor = FSSM::Monitor.new

monitor.path '/some/directory/' do
  update {|base, relative|}
  delete {|base, relative|}
  create {|base, relative|}
end

monitor.run