如何使用ruby检测文件系统事件

时间:2014-06-30 09:59:16

标签: ruby events filesystems

我想使用ruby来查看文件和目录的文件系统事件。

现在我正在使用Guard。 但它只检测文件事件。

有没有办法检测文件系统事件,包括目录事件?

1 个答案:

答案 0 :(得分:6)

您可以rb-inotify查看特定目录的文件系统事件 例如:

require "rb-inotify"

DIR_TO_WATCH = "/tmp/notify-dir"

notifier = INotify::Notifier.new

notifier.watch(DIR_TO_WATCH, :create, :delete) do |event|
  puts "Create event for: #{event.name}" if event.flags.include?(:create)
  puts "Delete event for: #{event.name}" if event.flags.include?(:delete)
end

notifier.run

希望有所帮助。

修改

对于支持多个平台,您可以尝试Listen,这是由Guard的家伙制作的,并支持Mac OS X 10.6 +,Linux,BSD(some problems are there)和视窗。

来自文档:

listener = Listen.to('dir/to/listen', 'dir/to/listen2') do |modified, added, removed|
  puts "modified absolute path: #{modified}"
  puts "added absolute path: #{added}"
  puts "removed absolute path: #{removed}"
end
listener.start # not blocking
sleep