guard 1.0.3 → 1.1.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/CHANGELOG.md +0 -6
  2. data/README.md +38 -30
  3. data/lib/guard.rb +158 -285
  4. data/lib/guard/cli.rb +16 -2
  5. data/lib/guard/dsl.rb +41 -20
  6. data/lib/guard/dsl_describer.rb +1 -1
  7. data/lib/guard/group.rb +1 -1
  8. data/lib/guard/guard.rb +39 -5
  9. data/lib/guard/guardfile.rb +70 -0
  10. data/lib/guard/runner.rb +179 -0
  11. data/lib/guard/ui.rb +1 -1
  12. data/lib/guard/version.rb +2 -4
  13. data/lib/guard/watcher.rb +1 -0
  14. metadata +16 -77
  15. data/bin/fsevent_watch_guard_guard +0 -0
  16. data/lib/guard/listener.rb +0 -376
  17. data/lib/guard/listeners/darwin.rb +0 -62
  18. data/lib/guard/listeners/linux.rb +0 -93
  19. data/lib/guard/listeners/polling.rb +0 -55
  20. data/lib/guard/listeners/windows.rb +0 -63
  21. data/lib/vendor/darwin/Gemfile +0 -6
  22. data/lib/vendor/darwin/Guardfile +0 -8
  23. data/lib/vendor/darwin/LICENSE +0 -20
  24. data/lib/vendor/darwin/README.rdoc +0 -255
  25. data/lib/vendor/darwin/Rakefile +0 -21
  26. data/lib/vendor/darwin/bin/fsevent_watch +0 -0
  27. data/lib/vendor/darwin/ext/fsevent_watch/Info.plist +0 -38
  28. data/lib/vendor/darwin/ext/fsevent_watch/LICENSE +0 -21
  29. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch.xcodeproj/project.pbxproj +0 -254
  30. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/TSICTString.c +0 -394
  31. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/TSICTString.h +0 -74
  32. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/cli.c +0 -160
  33. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/cli.h +0 -45
  34. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/common.h +0 -34
  35. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/compat.c +0 -20
  36. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/compat.h +0 -40
  37. data/lib/vendor/darwin/ext/fsevent_watch/fsevent_watch/main.c +0 -509
  38. data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Common.xcconfig +0 -82
  39. data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Debug.xcconfig +0 -19
  40. data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/Release.xcconfig +0 -23
  41. data/lib/vendor/darwin/ext/fsevent_watch/xcconfig/fsevent_watch.xcconfig +0 -17
  42. data/lib/vendor/darwin/ext/rakefile.rb +0 -47
  43. data/lib/vendor/darwin/ext/rb-fsevent.xcconfig +0 -33
  44. data/lib/vendor/darwin/lib/rb-fsevent.rb +0 -2
  45. data/lib/vendor/darwin/lib/rb-fsevent/fsevent.rb +0 -111
  46. data/lib/vendor/darwin/lib/rb-fsevent/version.rb +0 -3
  47. data/lib/vendor/darwin/rb-fsevent.gemspec +0 -25
  48. data/lib/vendor/darwin/spec/fixtures/folder1/file1.txt +0 -0
  49. data/lib/vendor/darwin/spec/fixtures/folder1/folder2/file2.txt +0 -0
  50. data/lib/vendor/darwin/spec/rb-fsevent/fsevent_spec.rb +0 -88
  51. data/lib/vendor/darwin/spec/spec_helper.rb +0 -23
  52. data/lib/vendor/linux/MIT-LICENSE +0 -20
  53. data/lib/vendor/linux/README.md +0 -66
  54. data/lib/vendor/linux/Rakefile +0 -54
  55. data/lib/vendor/linux/VERSION +0 -1
  56. data/lib/vendor/linux/lib/rb-inotify.rb +0 -17
  57. data/lib/vendor/linux/lib/rb-inotify/event.rb +0 -139
  58. data/lib/vendor/linux/lib/rb-inotify/native.rb +0 -31
  59. data/lib/vendor/linux/lib/rb-inotify/native/flags.rb +0 -89
  60. data/lib/vendor/linux/lib/rb-inotify/notifier.rb +0 -308
  61. data/lib/vendor/linux/lib/rb-inotify/watcher.rb +0 -83
  62. data/lib/vendor/linux/rb-inotify.gemspec +0 -53
  63. data/lib/vendor/windows/Gemfile +0 -4
  64. data/lib/vendor/windows/README.md +0 -34
  65. data/lib/vendor/windows/Rakefile +0 -18
  66. data/lib/vendor/windows/lib/rb-fchange.rb +0 -14
  67. data/lib/vendor/windows/lib/rb-fchange/event.rb +0 -29
  68. data/lib/vendor/windows/lib/rb-fchange/native.rb +0 -45
  69. data/lib/vendor/windows/lib/rb-fchange/native/flags.rb +0 -78
  70. data/lib/vendor/windows/lib/rb-fchange/notifier.rb +0 -149
  71. data/lib/vendor/windows/lib/rb-fchange/version.rb +0 -3
  72. data/lib/vendor/windows/lib/rb-fchange/watcher.rb +0 -99
  73. data/lib/vendor/windows/rb-fchange.gemspec +0 -34
  74. data/lib/vendor/windows/spec/fixtures/folder1/file1.txt +0 -0
  75. data/lib/vendor/windows/spec/fixtures/folder1/folder2/file2.txt +0 -0
  76. data/lib/vendor/windows/spec/rb-fchange/fchange_spec.rb +0 -119
  77. data/lib/vendor/windows/spec/spec_helper.rb +0 -21
@@ -1,62 +0,0 @@
1
- module Guard
2
-
3
- # Listener implementation for Mac OS X `FSEvents`.
4
- #
5
- class Darwin < Listener
6
-
7
- # Initialize the Listener.
8
- #
9
- def initialize(*)
10
- super
11
- @fsevent = FSEvent.new
12
- end
13
-
14
- # Start the listener.
15
- #
16
- def start
17
- super
18
- worker.run
19
- end
20
-
21
- # Stop the listener.
22
- #
23
- def stop
24
- super
25
- worker.stop
26
- end
27
-
28
- # Check if the listener is usable on the current OS.
29
- #
30
- # @return [Boolean] whether usable or not
31
- #
32
- def self.usable?(no_vendor = false)
33
- return false unless RbConfig::CONFIG['target_os'] =~ /darwin(9|1\d)/i
34
-
35
- $LOAD_PATH << File.expand_path('../../../vendor/darwin/lib', __FILE__) unless no_vendor
36
- require 'rb-fsevent'
37
- true
38
- rescue LoadError
39
- false
40
- end
41
-
42
- private
43
-
44
- # Get the listener worker.
45
- #
46
- def worker
47
- @fsevent
48
- end
49
-
50
- # Watch the given directory for file changes.
51
- #
52
- # @param [String] directory the directory to watch
53
- #
54
- def watch(directory)
55
- worker.watch(directory) do |modified_dirs|
56
- files = modified_files(modified_dirs)
57
- @callback.call(files) unless files.empty?
58
- end
59
- end
60
-
61
- end
62
- end
@@ -1,93 +0,0 @@
1
- module Guard
2
-
3
- # Listener implementation for Linux `inotify`.
4
- #
5
- class Linux < Listener
6
-
7
- # Initialize the Listener.
8
- #
9
- def initialize(*)
10
- super
11
- @inotify = INotify::Notifier.new
12
- @files = []
13
- @latency = 0.5
14
- end
15
-
16
- # Start the listener.
17
- #
18
- def start
19
- @stop = false
20
- super
21
- watch_change unless watch_change?
22
- end
23
-
24
- # Stop the listener.
25
- #
26
- def stop
27
- super
28
- @stop = true
29
- end
30
-
31
- # Check if the listener is usable on the current OS.
32
- #
33
- # @return [Boolean] whether usable or not
34
- #
35
- def self.usable?(no_vendor = false)
36
- return false unless RbConfig::CONFIG['target_os'] =~ /linux/i
37
-
38
- $LOAD_PATH << File.expand_path('../../../vendor/linux/lib', __FILE__) unless no_vendor
39
- require 'rb-inotify'
40
- true
41
- rescue LoadError
42
- false
43
- end
44
-
45
- private
46
-
47
- # Get the listener worker.
48
- #
49
- def worker
50
- @inotify
51
- end
52
-
53
- # Watch the given directory for file changes.
54
- #
55
- # @param [String] directory the directory to watch
56
- #
57
- def watch(directory)
58
- worker.watch(directory, :recursive, :attrib, :create, :move_self, :close_write) do |event|
59
- unless event.name == "" # Event on root directory
60
- @files << event.absolute_name
61
- end
62
- end
63
- rescue Interrupt
64
- end
65
-
66
- # Test if inotify is watching for changes.
67
- #
68
- # @return [Boolean] whether inotify is active or not
69
- #
70
- def watch_change?
71
- !!(defined? @watch_change and @watch_change)
72
- end
73
-
74
- # Watch for file system changes.
75
- #
76
- def watch_change
77
- @watch_change = true
78
- until @stop
79
- if RbConfig::CONFIG['build'] =~ /java/ || IO.select([worker.to_io], [], [], @latency)
80
- break if @stop
81
-
82
- sleep(@latency)
83
- worker.process
84
-
85
- files = modified_files(@files.shift(@files.size).map { |f| File.dirname(f) }.uniq)
86
- @callback.call(files) unless files.empty?
87
- end
88
- end
89
- @watch_change = false
90
- end
91
-
92
- end
93
- end
@@ -1,55 +0,0 @@
1
- module Guard
2
-
3
- # Polling listener that works cross-platform and
4
- # has no dependencies. This is the listener that
5
- # uses the most CPU processing power and has higher
6
- # file IO that the other implementations.
7
- #
8
- class Polling < Listener
9
-
10
- # Initialize the Listener.
11
- #
12
- def initialize(*)
13
- super
14
- @latency = 1.5
15
- end
16
-
17
- # Start the listener.
18
- #
19
- def start
20
- @stop = false
21
- super
22
- watch_change
23
- end
24
-
25
- # Stop the listener.
26
- #
27
- def stop
28
- super
29
- @stop = true
30
- end
31
-
32
- # Watch the given directory for file changes.
33
- #
34
- # @param [String] directory the directory to watch
35
- #
36
- def watch(directory)
37
- @existing = all_files
38
- end
39
-
40
- private
41
-
42
- # Watch for file system changes.
43
- #
44
- def watch_change
45
- until @stop
46
- start = Time.now.to_f
47
- files = modified_files([@directory], :all => true)
48
- @callback.call(files) unless files.empty?
49
- nap_time = @latency - (Time.now.to_f - start)
50
- sleep(nap_time) if nap_time > 0
51
- end
52
- end
53
-
54
- end
55
- end
@@ -1,63 +0,0 @@
1
- module Guard
2
-
3
- # Listener implementation for Windows `fchange`.
4
- #
5
- class Windows < Listener
6
-
7
- # Initialize the Listener.
8
- #
9
- def initialize(*)
10
- super
11
- @fchange = FChange::Notifier.new
12
- end
13
-
14
- # Start the listener.
15
- #
16
- def start
17
- super
18
- worker.run
19
- end
20
-
21
- # Stop the listener.
22
- #
23
- def stop
24
- super
25
- worker.stop
26
- end
27
-
28
- # Check if the listener is usable on the current OS.
29
- #
30
- # @return [Boolean] whether usable or not
31
- #
32
- def self.usable?(no_vendor = false)
33
- return false unless RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i
34
-
35
- $LOAD_PATH << File.expand_path('../../../vendor/windows/lib', __FILE__) unless no_vendor
36
- require 'rb-fchange'
37
- true
38
- rescue LoadError
39
- false
40
- end
41
-
42
- private
43
-
44
- # Watch the given directory for file changes.
45
- #
46
- # @param [String] directory the directory to watch
47
- #
48
- def watch(directory)
49
- worker.watch(directory, :all_events, :recursive) do |event|
50
- paths = [File.expand_path(event.watcher.path)]
51
- files = modified_files(paths, :all => true)
52
- @callback.call(files) unless files.empty?
53
- end
54
- end
55
-
56
- # Get the listener worker.
57
- #
58
- def worker
59
- @fchange
60
- end
61
-
62
- end
63
- end
@@ -1,6 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "rake"
6
-
@@ -1,8 +0,0 @@
1
- # A sample Guardfile
2
- # More info at http://github.com/guard/guard#readme
3
-
4
- guard 'rspec', :version => 2 do
5
- watch(%r(^spec/(.*)_spec.rb))
6
- watch(%r(^lib/(.*)\.rb)) { |m| "spec/#{m[1]}_spec.rb" }
7
- watch('spec/spec_helper.rb') { "spec" }
8
- end
@@ -1,20 +0,0 @@
1
- Copyright (c) 2011 Thibaud Guillaume-Gentil
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,255 +0,0 @@
1
- = rb-fsevent
2
-
3
- Very simple & usable Mac OSX FSEvents API
4
-
5
- - RubyCocoa not required!
6
- - Signals are working (really)
7
- - Tested on MRI 1.8.7 & 1.9.2, JRuby 1.6.3
8
- - Tested on 10.6 & 10.7 (though 10.5 should work just as well)
9
- - Tested with XCode 3.2.6, 4.0.2, 4.1, 4.2b5
10
-
11
- == Install
12
-
13
- gem install rb-fsevent
14
-
15
- == Usage
16
-
17
- === Singular path
18
-
19
- require 'rb-fsevent'
20
-
21
- fsevent = FSEvent.new
22
- fsevent.watch Dir.pwd do |directories|
23
- puts "Detected change inside: #{directories.inspect}"
24
- end
25
- fsevent.run
26
-
27
- === Multiple paths
28
-
29
- require 'rb-fsevent'
30
-
31
- paths = ['/tmp/path/one', '/tmp/path/two', Dir.pwd]
32
-
33
- fsevent = FSEvent.new
34
- fsevent.watch paths do |directories|
35
- puts "Detected change inside: #{directories.inspect}"
36
- end
37
- fsevent.run
38
-
39
- === Multiple paths and additional options as a Hash
40
-
41
- require 'rb-fsevent'
42
-
43
- paths = ['/tmp/path/one', '/tmp/path/two', Dir.pwd]
44
- options = {:latency => 1.5, :no_defer => true }
45
-
46
- fsevent = FSEvent.new
47
- fsevent.watch paths, options do |directories|
48
- puts "Detected change inside: #{directories.inspect}"
49
- end
50
- fsevent.run
51
-
52
- === Multiple paths and additional options as an Array
53
-
54
- require 'rb-fsevent'
55
-
56
- paths = ['/tmp/path/one', '/tmp/path/two', Dir.pwd]
57
- options = ['--latency', 1.5, '--no-defer']
58
-
59
- fsevent = FSEvent.new
60
- fsevent.watch paths, options do |directories|
61
- puts "Detected change inside: #{directories.inspect}"
62
- end
63
- fsevent.run
64
-
65
- == Options
66
-
67
- When defining options using a hash or hash-like object, it gets checked for validity and converted to the appropriate fsevent_watch commandline arguments array when the FSEvent class is instantiated. This is obviously the safest and preferred method of passing in options.
68
-
69
- You may, however, choose to pass in an array of commandline arguments as your options value and it will be passed on, unmodified, to the fsevent_watch binary when called.
70
-
71
- So far, the following options are supported...
72
-
73
- - :latency => 0.5 # in seconds
74
- - :no_defer => true
75
- - :watch_root => true
76
- - :since_when => 18446744073709551615 # an FSEventStreamEventId
77
-
78
- === Latency
79
-
80
- The :latency parameter determines how long the service should wait after the first event before passing that information along to the client. If your latency is set to 4 seconds, and 300 changes occur in the first three, then the callback will be fired only once. If latency is set to 0.1 in the exact same scenario, you will see that callback fire somewhere closer to between 25 and 30 times.
81
-
82
- Setting a higher latency value allows for more effective temporal coalescing, resulting in fewer callbacks and greater overall efficiency... at the cost of apparent responsiveness. Setting this to a reasonably high value (and NOT setting :no_defer) is particularly well suited for background, daemon, or batch processing applications.
83
-
84
- Implementation note: It appears that FSEvents will only coalesce events from a maximum of 32 distinct subpaths, making the above completely accurate only when events are to fewer than 32 subpaths. Creating 300 files in one directory, for example, or 30 files in 10 subdirectories, but not 300 files within 300 subdirectories. In the latter case, you may receive 31 callbacks in one go after the latency period. As this appears to be an implementation detail, the number could potentially differ across OS revisions. It is entirely possible that this number is somehow configurable, but I have not yet discovered an accepted method of doing so.
85
-
86
- === NoDefer
87
-
88
- The :no_defer option changes the behavior of the latency parameter completely. Rather than waiting for $latency period of time before sending along events in an attempt to coalesce a potential deluge ahead of time, that first event is sent along to the client immediately and is followed by a $latency period of silence before sending along any additional events that occurred within that period.
89
-
90
- This behavior is particularly useful for interactive applications where that feeling of apparent responsiveness is most important, but you still don't want to get overwhelmed by a series of events that occur in rapid succession.
91
-
92
- === WatchRoot
93
-
94
- The :watch_root option allows for catching the scenario where you start watching "~/src/demo_project" and either it is later renamed to "~/src/awesome_sauce_3000" or the path changes in such a manner that the original directory is now at "~/clients/foo/iteration4/demo_project".
95
-
96
- Unfortunately, while this behavior is somewhat supported in the fsevent_watch binary built as part of this project, support for passing across detailed metadata is not (yet). As a result, you would not receive the appropriate RootChanged event and be able to react appropriately. Also, since the C code doesn't open watched directories and retain that file descriptor as part of path-specific callback metadata, we are unable to issue an F_GETPATH fcntl() to determine the directory's new path.
97
-
98
- Please do not use this option until proper support is added in an upcoming (planned) release.
99
-
100
- === SinceWhen
101
-
102
- The FSEventStreamEventId passed in to :since_when is used as a base for reacting to historic events. Unfortunately, not only is the metadata for transitioning from historic to live events not currently passed along, but it is incorrectly passed as a change event on the root path, and only per-host event streams are currently supported. When using per-host event streams, the event IDs are not guaranteed to be unique or contiguous when shared volumes (firewire/USB/net/etc) are used on multiple macs.
103
-
104
- Please do not use this option until proper support is added in an upcoming (planned) release, unless it's acceptable for you to receive that one fake event that's handled incorrectly when events transition from historical to live. Even in that scenario, there's no metadata available for determining the FSEventStreamEventId of the last received event.
105
-
106
- WARNING: passing in 0 as the parameter to :since_when will return events for every directory modified since "the beginning of time".
107
-
108
- == Debugging output
109
-
110
- If the gem is installed with the environment variable FWDEBUG set to the string "true", then fsevent_watch will be built with its various DEBUG sections defined, and the output to STDERR is truly verbose (and hopefully helpful in debugging your application and not just fsevent_watch itself). If enough people find this to be directly useful when developing code that makes use of rb-fsevent, then it wouldn't be hard to clean this up and make it a feature enabled by a commandline argument instead. Until somebody files an issue, however, I will assume otherwise.
111
-
112
- append_path called for: /tmp/moo/cow/
113
- resolved path to: /private/tmp/moo/cow
114
-
115
- config.sinceWhen 18446744073709551615
116
- config.latency 0.300000
117
- config.flags 00000000
118
- config.paths
119
- /private/tmp/moo/cow
120
-
121
- FSEventStreamRef @ 0x100108540:
122
- allocator = 0x7fff705a4ee0
123
- callback = 0x10000151e
124
- context = {0, 0x0, 0x0, 0x0, 0x0}
125
- numPathsToWatch = 1
126
- pathsToWatch = 0x7fff705a4ee0
127
- pathsToWatch[0] = '/private/tmp/moo/cow'
128
- latestEventId = -1
129
- latency = 300000 (microseconds)
130
- flags = 0x00000000
131
- runLoop = 0x0
132
- runLoopMode = 0x0
133
-
134
-
135
- FSEventStreamCallback fired!
136
- numEvents: 32
137
- event path: /private/tmp/moo/cow/1/a/
138
- event flags: 00000000
139
- event ID: 1023767
140
- event path: /private/tmp/moo/cow/1/b/
141
- event flags: 00000000
142
- event ID: 1023782
143
- event path: /private/tmp/moo/cow/1/c/
144
- event flags: 00000000
145
- event ID: 1023797
146
- event path: /private/tmp/moo/cow/1/d/
147
- event flags: 00000000
148
- event ID: 1023812
149
- event path: /private/tmp/moo/cow/1/e/
150
- event flags: 00000000
151
- event ID: 1023827
152
- event path: /private/tmp/moo/cow/1/f/
153
- event flags: 00000000
154
- event ID: 1023842
155
- event path: /private/tmp/moo/cow/1/g/
156
- event flags: 00000000
157
- event ID: 1023857
158
- event path: /private/tmp/moo/cow/1/h/
159
- event flags: 00000000
160
- event ID: 1023872
161
- event path: /private/tmp/moo/cow/1/i/
162
- event flags: 00000000
163
- event ID: 1023887
164
- event path: /private/tmp/moo/cow/1/j/
165
- event flags: 00000000
166
- event ID: 1023902
167
- event path: /private/tmp/moo/cow/1/k/
168
- event flags: 00000000
169
- event ID: 1023917
170
- event path: /private/tmp/moo/cow/1/l/
171
- event flags: 00000000
172
- event ID: 1023932
173
- event path: /private/tmp/moo/cow/1/m/
174
- event flags: 00000000
175
- event ID: 1023947
176
- event path: /private/tmp/moo/cow/1/n/
177
- event flags: 00000000
178
- event ID: 1023962
179
- event path: /private/tmp/moo/cow/1/o/
180
- event flags: 00000000
181
- event ID: 1023977
182
- event path: /private/tmp/moo/cow/1/p/
183
- event flags: 00000000
184
- event ID: 1023992
185
- event path: /private/tmp/moo/cow/1/q/
186
- event flags: 00000000
187
- event ID: 1024007
188
- event path: /private/tmp/moo/cow/1/r/
189
- event flags: 00000000
190
- event ID: 1024022
191
- event path: /private/tmp/moo/cow/1/s/
192
- event flags: 00000000
193
- event ID: 1024037
194
- event path: /private/tmp/moo/cow/1/t/
195
- event flags: 00000000
196
- event ID: 1024052
197
- event path: /private/tmp/moo/cow/1/u/
198
- event flags: 00000000
199
- event ID: 1024067
200
- event path: /private/tmp/moo/cow/1/v/
201
- event flags: 00000000
202
- event ID: 1024082
203
- event path: /private/tmp/moo/cow/1/w/
204
- event flags: 00000000
205
- event ID: 1024097
206
- event path: /private/tmp/moo/cow/1/x/
207
- event flags: 00000000
208
- event ID: 1024112
209
- event path: /private/tmp/moo/cow/1/y/
210
- event flags: 00000000
211
- event ID: 1024127
212
- event path: /private/tmp/moo/cow/1/z/
213
- event flags: 00000000
214
- event ID: 1024142
215
- event path: /private/tmp/moo/cow/1/
216
- event flags: 00000000
217
- event ID: 1024145
218
- event path: /private/tmp/moo/cow/2/a/
219
- event flags: 00000000
220
- event ID: 1024160
221
- event path: /private/tmp/moo/cow/2/b/
222
- event flags: 00000000
223
- event ID: 1024175
224
- event path: /private/tmp/moo/cow/2/c/
225
- event flags: 00000000
226
- event ID: 1024190
227
- event path: /private/tmp/moo/cow/2/d/
228
- event flags: 00000000
229
- event ID: 1024205
230
- event path: /private/tmp/moo/cow/2/e/
231
- event flags: 00000000
232
- event ID: 1024220
233
-
234
- == Note about FFI
235
-
236
- rb-fsevent doesn't use {ruby-ffi}[http://github.com/ffi/ffi] anymore because it sadly doesn't allow for catching Signals. You can still see the code in the {ffi branch}[http://github.com/thibaudgg/rb-fsevent/tree/ffi].
237
-
238
- == Development
239
-
240
- - Source hosted at {GitHub}[http://github.com/thibaudgg/rb-fsevent]
241
- - Report issues/Questions/Feature requests on {GitHub Issues}[http://github.com/thibaudgg/rb-fsevent/issues]
242
-
243
- Pull requests are quite welcome! Please ensure that your commits are in a topic branch for each individual changeset than can be reasonably isolated. It is also important to ensure that your changes are well tested... whether that means new tests, modified tests, or fixing a scenario where the existing tests currently fail. If you have rvm and the required rubies currently installed, we have a helper task for running the testsuite in all of them:
244
-
245
- rake spec:portability
246
-
247
- The list of tested RVM targets is currently:
248
-
249
- %w[1.8.6 1.8.7 1.9.2 jruby-head]
250
-
251
- == Authors
252
-
253
- - {Thibaud Guillaume-Gentil}[http://github.com/thibaudgg]
254
- - {Travis Tilley}[http://github.com/ttilley]
255
-