Module: FSEvent
- Defined in:
- ext/fs_event/fs_event.c
Class Method Summary collapse
-
.fs_event_watch(path, processor) ⇒ Object
Calls the block with the changed paths when something changes in the specified path.
Class Method Details
.fs_event_watch(path, processor) ⇒ Object
Calls the block with the changed paths when something changes in the specified path. This method blocks the thread forever.
FSEvent.watch('/tmp', Proc.new { |files| p files })
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'ext/fs_event/fs_event.c', line 60
static VALUE fs_event_watch(VALUE self, VALUE path, VALUE proc)
{
processor = proc;
CFStringRef cfPaths[1];
cfPaths[0] = CFStringCreateWithCString(
kCFAllocatorSystemDefault,
RSTRING_PTR(path),
kCFStringEncodingUTF8
);
CFArrayRef paths = CFArrayCreate(kCFAllocatorSystemDefault, (const void **)cfPaths, 1, NULL);
FSEventStreamRef streamRef = FSEventStreamCreate(
NULL,
&fs_event_callback,
NULL,
paths,
kFSEventStreamEventIdSinceNow,
(CFTimeInterval)0.5,
kFSEventStreamCreateFlagWatchRoot | kFSEventStreamCreateFlagFileEvents
);
#ifdef DEBUG
FSEventStreamShow(streamRef);
#endif
FSEventStreamScheduleWithRunLoop(streamRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
FSEventStreamStart(streamRef);
CFRunLoopRun();
FSEventStreamFlushSync(streamRef);
FSEventStreamStop(streamRef);
return Qnil;
}
|