Class: FSEvent

Inherits:
Object
  • Object
show all
Defined in:
lib/vendor/darwin/lib/rb-fsevent/fsevent.rb,
lib/vendor/darwin/lib/rb-fsevent/version.rb

Constant Summary collapse

VERSION =
"0.4.3.1"

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#callbackObject (readonly)

Returns the value of attribute callback.



15
16
17
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 15

def callback
  @callback
end

#pathsObject (readonly)

Returns the value of attribute paths.



15
16
17
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 15

def paths
  @paths
end

Instance Method Details

#pipeObject



56
57
58
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 56

def pipe
  @pipe ||= IO.popen("#{self.class.watcher_path} #{options_string} #{shellescaped_paths}")
end

#runObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 30

def run
  @running = true
  # please note the use of IO::select() here, as it is used specifically to
  # preserve correct signal handling behavior in ruby 1.8.
  while @running && IO::select([pipe], nil, nil, nil)
    if line = pipe.readline
      modified_dir_paths = line.split(":").select { |dir| dir != "\n" }
      callback.call(modified_dir_paths)
    end
  end
rescue Interrupt, IOError
ensure
  stop
end

#stopObject



45
46
47
48
49
50
51
52
53
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 45

def stop
  if pipe
    Process.kill("KILL", pipe.pid)
    pipe.close
  end
rescue IOError
ensure
  @pipe = @running = nil
end

#watch(watch_paths, options = nil, &block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/vendor/darwin/lib/rb-fsevent/fsevent.rb', line 17

def watch(watch_paths, options=nil, &block)
  @paths      = watch_paths.kind_of?(Array) ? watch_paths : [watch_paths]
  @callback   = block

  if options.kind_of?(Hash)
    @options  = parse_options(options)
  elsif options.kind_of?(Array)
    @options  = options
  else
    @options  = []
  end
end