class EventMachine::FileWatch
Utility class that is useful for file monitoring. Supported events are
-
File is modified
-
File is deleted
-
File is moved
@note On Mac OS X, file watching only works when kqueue is enabled
Constants
- Cdeleted
@private
- Cmodified
@private
- Cmoved
@private
Public Instance Methods
Will be called when the file is deleted. Supposed to be redefined by subclasses. When the file is deleted, #stop_watching will be called after this to make sure everything is cleaned up correctly.
@note On Linux (with {en.wikipedia.org/wiki/Inotify inotify}), this method will not be called until all open file descriptors to
the file have been closed.
@abstract
# File lib/em/file_watch.rb, line 56 def file_deleted end
Will be called when the file is modified. Supposed to be redefined by subclasses.
@abstract
# File lib/em/file_watch.rb, line 45 def file_modified end
Will be called when the file is moved or renamed. Supposed to be redefined by subclasses.
@abstract
# File lib/em/file_watch.rb, line 62 def file_moved end
Returns the path that is being monitored.
@note Current implementation does not pick up on the new filename after a rename occurs.
@return [String] @see EventMachine.watch_file
# File lib/em/file_watch.rb, line 38 def path @path end
@private
# File lib/em/file_watch.rb, line 21 def receive_data(data) case data when Cmodified file_modified when Cdeleted file_deleted when Cmoved file_moved end end
Discontinue monitoring of the file.
This involves cleaning up the underlying monitoring details with kqueue/inotify, and in turn firing {EventMachine::Connection#unbind}. This will be called automatically when a file is deleted. User code may call it as well.
# File lib/em/file_watch.rb, line 69 def stop_watching EventMachine::unwatch_filename(@signature) end