[ANN] rev 0.3.0: Now with filesystem monitoring

T

Tony Arcieri

[Note: parts of this message were removed to make it a legal post.]

Rev is a high-performance event library for Ruby, providing event loops for
monitoring network, timer, and now filesystem events. Rev is based on the
libev C library.

http://github.com/tarcieri/rev/

Rev 0.3.0 provides some bugfixes and performance improvements as well as a
slew of new features, including many new extensions to existing APIs that
provide for better integration with the Ruby environment, and a new
filesystem monitoring API built on the facilities provided by the libev
event library, including inotify support on Linux.

The new StatWatcher API allows you to monitor any file or directory for
changes and receive events when changes occur:

-- snip --

class MyStatWatcher < Rev::StatWatcher
def on_change
begin
puts "#{path} has new status #{File.stat(path).inspect}"
rescue Errno::ENOENT
puts "#{path} was deleted"
end
end
end

watcher = MyStatWatcher.new "interesting/file"
watcher.attach Rev::Loop.default
Rev::Loop.default.run

-- snip --

I know there are many gems already available to provide filesystem
monitoring, such as directory_watcher (
http://github.com/TwP/directory_watcher/tree/master), and that EventMachine
already provides EM.watch_file, but for the Rev users out there, you now
have the same capabilities with Rev's asynchronous event loops.
 
T

Tim Pease

Rev is a high-performance event library for Ruby, providing event loops f= or
monitoring network, timer, and now filesystem events. =A0Rev is based on = the
libev C library.

http://github.com/tarcieri/rev/

Rev 0.3.0 provides some bugfixes and performance improvements as well as = a
slew of new features, including many new extensions to existing APIs that
provide for better integration with the Ruby environment, and a new
filesystem monitoring API built on the facilities provided by the libev
event library, including inotify support on Linux.

Awesome work Tony!

I for one welcome our new event-loop driven file notification
overlords. Thanks for adding inotify support in an elegant manner.

Blessings,
TwP
 
R

Rob Sanheim

[Note: parts of this message were removed to make it a legal post.]

Rev is a high-performance event library for Ruby, providing event loops for
monitoring network, timer, and now filesystem events. Rev is based on the
libev C library.

http://github.com/tarcieri/rev/

Rev 0.3.0 provides some bugfixes and performance improvements as well as a
slew of new features, including many new extensions to existing APIs that
provide for better integration with the Ruby environment, and a new
filesystem monitoring API built on the facilities provided by the libev
event library, including inotify support on Linux.

The new StatWatcher API allows you to monitor any file or directory for
changes and receive events when changes occur:

-- snip --

class MyStatWatcher < Rev::StatWatcher
def on_change
begin
puts "#{path} has new status #{File.stat(path).inspect}"
rescue Errno::ENOENT
puts "#{path} was deleted"
end
end
end

watcher = MyStatWatcher.new "interesting/file"
watcher.attach Rev::Loop.default
Rev::Loop.default.run

-- snip --

I know there are many gems already available to provide filesystem
monitoring, such as directory_watcher (
http://github.com/TwP/directory_watcher/tree/master), and that
EventMachine
already provides EM.watch_file, but for the Rev users out there, you now
have the same capabilities with Rev's asynchronous event loops.

Hi Tony

Does this use fsevents on Mac OSX?

Thanks,
Rob
 
T

Tony Arcieri

[Note: parts of this message were removed to make it a legal post.]

Hi Tony

Does this use fsevents on Mac OSX?

Unfortunately on all platforms besides Linux it's just using stat()
periodically, to my knowledge.

If you are interested in having other syscalls supported for filesystem
monitoring, I can ask on the libev mailing list.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top