guard 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,66 +1,66 @@
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?
33
- require 'rb-fsevent'
34
- if !defined?(FSEvent::VERSION) || (defined?(Gem::Version) &&
35
- Gem::Version.new(FSEvent::VERSION) < Gem::Version.new('0.4.0'))
36
- UI.info 'Please update rb-fsevent (>= 0.4.0)'
37
- false
38
- else
39
- true
40
- end
41
- rescue LoadError
42
- UI.info 'Please install rb-fsevent gem for Mac OSX FSEvents support'
43
- false
44
- end
45
-
46
- private
47
-
48
- # Get the listener worker.
49
- #
50
- def worker
51
- @fsevent
52
- end
53
-
54
- # Watch the given directory for file changes.
55
- #
56
- # @param [String] directory the directory to watch
57
- #
58
- def watch(directory)
59
- worker.watch(directory) do |modified_dirs|
60
- files = modified_files(modified_dirs)
61
- @callback.call(files) unless files.empty?
62
- end
63
- end
64
-
65
- end
66
- end
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?
33
+ require 'rb-fsevent'
34
+ if !defined?(FSEvent::VERSION) || (defined?(Gem::Version) &&
35
+ Gem::Version.new(FSEvent::VERSION) < Gem::Version.new('0.4.0'))
36
+ UI.info 'Please update rb-fsevent (>= 0.4.0)'
37
+ false
38
+ else
39
+ true
40
+ end
41
+ rescue LoadError
42
+ UI.info 'Please install rb-fsevent gem for Mac OSX FSEvents support'
43
+ false
44
+ end
45
+
46
+ private
47
+
48
+ # Get the listener worker.
49
+ #
50
+ def worker
51
+ @fsevent
52
+ end
53
+
54
+ # Watch the given directory for file changes.
55
+ #
56
+ # @param [String] directory the directory to watch
57
+ #
58
+ def watch(directory)
59
+ worker.watch(directory) do |modified_dirs|
60
+ files = modified_files(modified_dirs)
61
+ @callback.call(files) unless files.empty?
62
+ end
63
+ end
64
+
65
+ end
66
+ end
@@ -1,97 +1,97 @@
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?
36
- require 'rb-inotify'
37
- if !defined?(INotify::VERSION) || (defined?(Gem::Version) &&
38
- Gem::Version.new(INotify::VERSION.join('.')) < Gem::Version.new('0.8.5'))
39
- UI.info 'Please update rb-inotify (>= 0.8.5)'
40
- false
41
- else
42
- true
43
- end
44
- rescue LoadError
45
- UI.info 'Please install rb-inotify gem for Linux inotify support'
46
- false
47
- end
48
-
49
- private
50
-
51
- # Get the listener worker.
52
- #
53
- def worker
54
- @inotify
55
- end
56
-
57
- # Watch the given directory for file changes.
58
- #
59
- # @param [String] directory the directory to watch
60
- #
61
- def watch(directory)
62
- worker.watch(directory, :recursive, :attrib, :create, :move_self, :close_write) do |event|
63
- unless event.name == "" # Event on root directory
64
- @files << event.absolute_name
65
- end
66
- end
67
- rescue Interrupt
68
- end
69
-
70
- # Test if inotify is watching for changes.
71
- #
72
- # @return [Boolean] whether inotify is active or not
73
- #
74
- def watch_change?
75
- !!@watch_change
76
- end
77
-
78
- # Watch for file system changes.
79
- #
80
- def watch_change
81
- @watch_change = true
82
- until @stop
83
- if RbConfig::CONFIG['build'] =~ /java/ || IO.select([worker.to_io], [], [], @latency)
84
- break if @stop
85
-
86
- sleep(@latency)
87
- worker.process
88
-
89
- files = modified_files(@files.shift(@files.size).map { |f| File.dirname(f) }.uniq)
90
- @callback.call(files) unless files.empty?
91
- end
92
- end
93
- @watch_change = false
94
- end
95
-
96
- end
97
- end
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?
36
+ require 'rb-inotify'
37
+ if !defined?(INotify::VERSION) || (defined?(Gem::Version) &&
38
+ Gem::Version.new(INotify::VERSION.join('.')) < Gem::Version.new('0.8.5'))
39
+ UI.info 'Please update rb-inotify (>= 0.8.5)'
40
+ false
41
+ else
42
+ true
43
+ end
44
+ rescue LoadError
45
+ UI.info 'Please install rb-inotify gem for Linux inotify support'
46
+ false
47
+ end
48
+
49
+ private
50
+
51
+ # Get the listener worker.
52
+ #
53
+ def worker
54
+ @inotify
55
+ end
56
+
57
+ # Watch the given directory for file changes.
58
+ #
59
+ # @param [String] directory the directory to watch
60
+ #
61
+ def watch(directory)
62
+ worker.watch(directory, :recursive, :attrib, :create, :move_self, :close_write) do |event|
63
+ unless event.name == "" # Event on root directory
64
+ @files << event.absolute_name
65
+ end
66
+ end
67
+ rescue Interrupt
68
+ end
69
+
70
+ # Test if inotify is watching for changes.
71
+ #
72
+ # @return [Boolean] whether inotify is active or not
73
+ #
74
+ def watch_change?
75
+ !!@watch_change
76
+ end
77
+
78
+ # Watch for file system changes.
79
+ #
80
+ def watch_change
81
+ @watch_change = true
82
+ until @stop
83
+ if RbConfig::CONFIG['build'] =~ /java/ || IO.select([worker.to_io], [], [], @latency)
84
+ break if @stop
85
+
86
+ sleep(@latency)
87
+ worker.process
88
+
89
+ files = modified_files(@files.shift(@files.size).map { |f| File.dirname(f) }.uniq)
90
+ @callback.call(files) unless files.empty?
91
+ end
92
+ end
93
+ @watch_change = false
94
+ end
95
+
96
+ end
97
+ end
@@ -1,55 +1,55 @@
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
+ 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,61 +1,61 @@
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?
33
- require 'rb-fchange'
34
- true
35
- rescue LoadError
36
- UI.info 'Please install rb-fchange gem for Windows file events support'
37
- false
38
- end
39
-
40
- private
41
-
42
- # Watch the given directory for file changes.
43
- #
44
- # @param [String] directory the directory to watch
45
- #
46
- def watch(directory)
47
- worker.watch(directory, :all_events, :recursive) do |event|
48
- paths = [File.expand_path(event.watcher.path)]
49
- files = modified_files(paths, :all => true)
50
- @callback.call(files) unless files.empty?
51
- end
52
- end
53
-
54
- # Get the listener worker.
55
- #
56
- def worker
57
- @fchange
58
- end
59
-
60
- end
61
- end
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?
33
+ require 'rb-fchange'
34
+ true
35
+ rescue LoadError
36
+ UI.info 'Please install rb-fchange gem for Windows file events support'
37
+ false
38
+ end
39
+
40
+ private
41
+
42
+ # Watch the given directory for file changes.
43
+ #
44
+ # @param [String] directory the directory to watch
45
+ #
46
+ def watch(directory)
47
+ worker.watch(directory, :all_events, :recursive) do |event|
48
+ paths = [File.expand_path(event.watcher.path)]
49
+ files = modified_files(paths, :all => true)
50
+ @callback.call(files) unless files.empty?
51
+ end
52
+ end
53
+
54
+ # Get the listener worker.
55
+ #
56
+ def worker
57
+ @fchange
58
+ end
59
+
60
+ end
61
+ end