Class | Ramaze::Reloader::WatchInotify |
In: |
lib/ramaze/reloader/watch_inotify.rb
|
Parent: | Object |
TODO:
* There seems to be a problem somewhere that I couldn't identify yet, a file has to be modified twice initially to make it show up as modified here, subsequent changes work just fine. The only workaround I could find right now would be to read/write every single file, but that would be unexpected, irresponsible, and error-prone.
NOTE:
* I have changed from using a Mutex to using a Queue, which uses a Mutex internally.
POLL_INTERVAL | = | 2 |
NOTIFY_MASK | = | RInotify::MODIFY | RInotify::IN_ONESHOT |
NOTE:
We have to add the changed file again after we got a notification, I have no idea why, but using IN_ONESHOT should make sure that there is no memory leak in the C level even if we add a file again. There is a memory leak however in the watch_descriptors hash, since rinotify won't synchronize the contents properly and will only add to the hash, so we have to clean up ourselves.
FIXME:
Seems like this won't work due to some bug in the rinotify library. Would be cool if someone could make a FFI version.