listen 0.7.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5ddde18cc71f8d339471f213dba615ae73e37065
4
+ data.tar.gz: c8c634ac2be8bcf0187eb647052b6386e5136931
5
+ SHA512:
6
+ metadata.gz: 4a84e00be4585046590e28f2a8020336c8cb6ad1da212b93354ebee37efea5dc6077586cc3d242a69526e5dbd05eb486240b6645a7120f6fd343c560af08bef3
7
+ data.tar.gz: 57b2e4b3d73c702d4458a4f6bb62ae36a70bbb69c334fabc01181bcc7173c192a706974691126f175f107c947f1d538cbf85ea3278e6417a729f100f04687094
data/CHANGELOG.md CHANGED
@@ -1,56 +1,78 @@
1
- ## 0.7.3 - February 24, 2013
1
+ ## 1.0.0 - April 20, 2013
2
2
 
3
3
  ### Bug fix
4
4
 
5
- - [#88] Update wdm dependency. (fixed by [@mrbinky3000][])
6
- - [#78] Depend on latest rb-inotify. (fixed by [@mbj][])
5
+ - [#93][] Remove dependency operator in the "gem install" message. (reported by [@scottdavis][], fixed by [@rymai][])
6
+
7
+ ### Changes & deprecations
8
+
9
+ - [#98][] `Listen.to` does not block the current thread anymore. Use `Listen.to!` if you want the old behavior back. ([@rymai][])
10
+ - [#98][] `Listen::Listener#start` does not block the current thread anymore. Use `Listen::Listener#start!` if you want the old behavior back. ([@rymai][])
11
+ - [#98][] `Listen::Listener#start`'s `blocking` parameter is deprecated. ([@rymai][])
12
+
13
+ ### Improvements
14
+
15
+ - [#98][] New method: `Listen.to!` which blocks the current thread. ([@rymai][])
16
+ - [#98][] New method: `Listen::Listener#start!` to start the listener and block the current thread. ([@martikaljuve][] & [@rymai][])
17
+ - [#95][] Make `Listen::Listener` capable of listening to multiple directories, deprecates `Listen::MultiListener`. ([@rymai][])
18
+ - [#85][] Compute the SHA1 sum only for regular files. ([@antifuchs][])
19
+ - New methods: `Listen::Adapter#pause`, `Listen::Adapter#unpause` and `Listen::Adapter#paused?`. ([@rymai][])
20
+ - Refactor `Listen::DirectoryRecord` internals. ([@rymai][])
21
+ - Refactor `Listen::DependencyManager` internals. ([@rymai][])
22
+
23
+ ## 0.7.3 - February 24, 2013
24
+
25
+ ### Bug fixes
26
+
27
+ - [#88][] Update wdm dependency. ([@mrbinky3000][])
28
+ - [#78][] Depend on latest rb-inotify. ([@mbj][])
7
29
 
8
30
  ## 0.7.2 - January 11, 2013
9
31
 
10
32
  ### Bug fix
11
33
 
12
- - [#76] Exception on filename which is not in UTF-8. (fixed by [@piotr-sokolowski][])
34
+ - [#76][] Exception on filename which is not in UTF-8. ([@piotr-sokolowski][])
13
35
 
14
36
  ## 0.7.1 - January 6, 2013
15
37
 
16
38
  ### Bug fix
17
39
 
18
- - [#75] Default high precision off if the mtime call fails. (fixed by [@zanker][])
40
+ - [#75][] Default high precision off if the mtime call fails. ([@zanker][])
19
41
 
20
42
  ## 0.7.0 - December 29, 2012
21
43
 
22
- ### Bug fixes
44
+ ### Bug fix
23
45
 
24
- - [#73] Rescue Errno::EOPNOTSUPP on sha1_checksum generation. (fixed by [@thibaudgg][])
46
+ - [#73][] Rescue Errno::EOPNOTSUPP on sha1_checksum generation. ([@thibaudgg][])
25
47
 
26
48
  ### New feature
27
49
 
28
- - Add support for *BSD with rb-kqueue. ([@mat813][])
50
+ - [#72][] Add support for *BSD with rb-kqueue. ([@mat813][])
29
51
 
30
52
  ## 0.6.0 - November 21, 2012
31
53
 
32
54
  ### New feature
33
55
 
34
- - Add bang versions for filter and ignore listener methods. ([@tarsolya][])
56
+ - [#68][] Add bang versions for `Listener#filter` and `Listener#ignore` methods. ([@tarsolya][])
35
57
 
36
58
  ## 0.5.3 - October 3, 2012
37
59
 
38
60
  ### Bug fixes
39
61
 
40
- - [#65] Fix ruby warning in adapter.rb. (fixed by [@vongruenigen][])
41
- - [#64] ENXIO raised when hashing UNIX domain socket file. (fixed by [@sunaku][])
62
+ - [#65][] Fix ruby warning in adapter.rb. ([@vongruenigen][])
63
+ - [#64][] ENXIO raised when hashing UNIX domain socket file. ([@sunaku][])
42
64
 
43
65
  ## 0.5.2 - Septemper 23, 2012
44
66
 
45
67
  ### Bug fix
46
68
 
47
- - [#62] Fix double change callback with polling adapter. (fixed by [@thibaudgg][])
69
+ - [#62][] Fix double change callback with polling adapter. ([@thibaudgg][])
48
70
 
49
71
  ## 0.5.1 - Septemper 18, 2012
50
72
 
51
73
  ### Bug fix
52
74
 
53
- - [#61] Fix a synchronisation bug that caused constant fallback to polling. (fixed by [@Maher4Ever][])
75
+ - [#61][] Fix a synchronisation bug that caused constant fallback to polling. ([@Maher4Ever][])
54
76
 
55
77
  ## 0.5.0 - Septemper 1, 2012
56
78
 
@@ -62,60 +84,60 @@
62
84
 
63
85
  ### Improvements
64
86
 
65
- - [#28] Enhance the speed of detecting changes on Windows by using the [WDM][] library. ([@Maher4Ever][])
87
+ - [#28][] Enhance the speed of detecting changes on Windows by using the [WDM][] library. ([@Maher4Ever][])
66
88
 
67
89
  ## 0.4.7 - June 27, 2012
68
90
 
69
91
  ### Bug fixes
70
92
 
71
- - Increase latency to 0.25, to avoid useless polling fallback. (fixed by [@thibaudgg][])
72
- - Change watched inotify events, to avoid duplication callback. (fixed by [@thibaudgg][])
73
- - [#41](https://github.com/guard/listen/issues/41) Use lstat instead of stat when calculating mtime. (fixed by [@ebroder][])
93
+ - Increase latency to 0.25, to avoid useless polling fallback. ([@thibaudgg][])
94
+ - Change watched inotify events, to avoid duplication callback. ([@thibaudgg][])
95
+ - [#41][] Use lstat instead of stat when calculating mtime. ([@ebroder][])
74
96
 
75
97
  ## 0.4.6 - June 20, 2012
76
98
 
77
99
  ### Bug fix
78
100
 
79
- - [#39](https://github.com/guard/listen/issues/39) Fix digest race condition. (fixed by [@dkubb][])
101
+ - [#39][] Fix digest race condition. ([@dkubb][])
80
102
 
81
103
  ## 0.4.5 - June 13, 2012
82
104
 
83
105
  ### Bug fix
84
106
 
85
- - [#39](https://github.com/guard/listen/issues/39) Rescue Errno::ENOENT when path inserted doesn't exist. (reported by [@textgoeshere][], fixed by [@thibaudgg][] and [@rymai][])
107
+ - [#39][] Rescue Errno::ENOENT when path inserted doesn't exist. (reported by [@textgoeshere][], fixed by [@thibaudgg][] and [@rymai][])
86
108
 
87
109
  ## 0.4.4 - June 8, 2012
88
110
 
89
111
  ### Bug fixes
90
112
 
91
- - ~~[#39](https://github.com/guard/listen/issues/39) Non-existing path insertion bug. (reported by [@textgoeshere][], fixed by [@thibaudgg][])~~
113
+ - ~~[#39][] Non-existing path insertion bug. (reported by [@textgoeshere][], fixed by [@thibaudgg][])~~
92
114
  - Fix relative path for directories containing special characters. (reported by [@napcs][], fixed by [@netzpirat][])
93
115
 
94
116
  ## 0.4.3 - June 6, 2012
95
117
 
96
118
  ### Bug fixes
97
119
 
98
- - [#24](https://github.com/guard/listen/issues/24) Fail gracefully when the inotify limit is not enough for Listen to function. (reported by [@daemonza][], fixed by [@Maher4Ever][])
99
- - [#32](https://github.com/guard/listen/issues/32) Fix a crash when trying to calculate the checksum of unreadable files. (reported by [@nex3][], fixed by [@Maher4Ever][])
120
+ - [#24][] Fail gracefully when the inotify limit is not enough for Listen to function. (reported by [@daemonza][], fixed by [@Maher4Ever][])
121
+ - [#32][] Fix a crash when trying to calculate the checksum of unreadable files. (reported by [@nex3][], fixed by [@Maher4Ever][])
100
122
 
101
123
  ### Improvements
102
124
 
103
- - Add `#relative_paths` method to listeners. ([@Maher4Ever][])
104
- - Add `#started?` query-method to adapters. ([@Maher4Ever][])
125
+ - Add `Listener#relative_paths`. ([@Maher4Ever][])
126
+ - Add `Adapter#started?`. ([@Maher4Ever][])
105
127
  - Dynamically detect the mtime precision used on a system. ([@Maher4Ever][] with help from [@nex3][])
106
128
 
107
129
  ## 0.4.2 - May 1, 2012
108
130
 
109
131
  ### Bug fixes
110
132
 
111
- - [#21](https://github.com/guard/listen/issues/21) Issues when listening to changes in relative paths. (reported by [@akerbos][], fixed by [@Maher4Ever][])
112
- - [#27](https://github.com/guard/listen/issues/27) Wrong reports for files modifications. (reported by [@cobychapple][], fixed by [@Maher4Ever][])
133
+ - [#21][] Issues when listening to changes in relative paths. (reported by [@akerbos][], fixed by [@Maher4Ever][])
134
+ - [#27][] Wrong reports for files modifications. (reported by [@cobychapple][], fixed by [@Maher4Ever][])
113
135
  - Fix segmentation fault when profiling on Windows. ([@Maher4Ever][])
114
136
  - Fix redundant watchers on Windows. ([@Maher4Ever][])
115
137
 
116
138
  ### Improvements
117
139
 
118
- - [#17](https://github.com/guard/listen/issues/17) Use regexp-patterns with the `ignore` method instead of supplying paths. (reported by [@fny][], added by [@Maher4Ever][])
140
+ - [#17][] Use regexp-patterns with the `ignore` method instead of supplying paths. (reported by [@fny][], added by [@Maher4Ever][])
119
141
  - Speed improvement when listening to changes in directories with ignored paths. ([@Maher4Ever][])
120
142
  - Added `.rbx` and `.svn` to ignored directories. ([@Maher4Ever][])
121
143
 
@@ -123,13 +145,13 @@
123
145
 
124
146
  ### Bug fix
125
147
 
126
- - [#18](https://github.com/guard/listen/issues/18) Listener crashes when removing directories with nested paths. (reported by [@daemonza][], fixed by [@Maher4Ever][])
148
+ - [#18][] Listener crashes when removing directories with nested paths. (reported by [@daemonza][], fixed by [@Maher4Ever][])
127
149
 
128
150
  ## 0.4.0 - April 9, 2012
129
151
 
130
152
  ### New features
131
153
 
132
- - Add `wait_for_callback` method to all adapters. ([@Maher4Ever][])
154
+ - Add `Adapter#wait_for_callback`. ([@Maher4Ever][])
133
155
  - Add `Listen::MultiListener` class to listen to multiple directories at once. ([@Maher4Ever][])
134
156
  - Allow passing multiple directories to the `Listen.to` method. ([@Maher4Ever][])
135
157
  - Add `blocking` option to `Listen#start` which can be used to disable blocking the current thread upon starting. ([@Maher4Ever][])
@@ -163,7 +185,7 @@
163
185
 
164
186
  ### Bug fix
165
187
 
166
- - [#9](https://github.com/guard/listen/issues/9) Ignore doesn't seem to work. (reported by [@markiz][], fixed by [@thibaudgg][])
188
+ - [#9][] Ignore doesn't seem to work. (reported by [@markiz][], fixed by [@thibaudgg][])
167
189
 
168
190
  ## 0.3.0 - February 21, 2012
169
191
 
@@ -181,7 +203,7 @@
181
203
  - Add rb-inotify support. ([@thibaudgg][] with [@Maher4Ever][] help)
182
204
  - Add rb-fsevent support. ([@thibaudgg][])
183
205
  - Add non-recursive diff with multiple directories support. ([@thibaudgg][])
184
- - Ignore .DS_Store by default. ([@thibaudgg][])
206
+ - Ignore `.DS_Store` files by default. ([@thibaudgg][])
185
207
 
186
208
  ## 0.1.0 - January 28, 2012
187
209
 
@@ -196,23 +218,37 @@
196
218
  [#27]: https://github.com/guard/listen/issues/27
197
219
  [#28]: https://github.com/guard/listen/issues/28
198
220
  [#32]: https://github.com/guard/listen/issues/32
221
+ [#39]: https://github.com/guard/listen/issues/39
199
222
  [#41]: https://github.com/guard/listen/issues/41
200
223
  [#61]: https://github.com/guard/listen/issues/61
201
224
  [#62]: https://github.com/guard/listen/issues/62
202
225
  [#64]: https://github.com/guard/listen/issues/64
203
226
  [#65]: https://github.com/guard/listen/issues/65
227
+ [#68]: https://github.com/guard/listen/issues/68
228
+ [#72]: https://github.com/guard/listen/issues/72
204
229
  [#73]: https://github.com/guard/listen/issues/73
205
230
  [#75]: https://github.com/guard/listen/issues/75
206
231
  [#76]: https://github.com/guard/listen/issues/76
232
+ [#78]: https://github.com/guard/listen/issues/78
233
+ [#85]: https://github.com/guard/listen/issues/85
234
+ [#88]: https://github.com/guard/listen/issues/88
235
+ [#93]: https://github.com/guard/listen/issues/93
236
+ [#95]: https://github.com/guard/listen/issues/95
237
+ [#96]: https://github.com/guard/listen/issues/96
238
+ [#98]: https://github.com/guard/listen/issues/98
207
239
  [@Maher4Ever]: https://github.com/Maher4Ever
208
- [@dkubb]: https://github.com/dkubb
209
- [@ebroder]: https://github.com/ebroder
210
240
  [@akerbos]: https://github.com/akerbos
241
+ [@antifuchs]: https://github.com/antifuchs
211
242
  [@cobychapple]: https://github.com/cobychapple
212
243
  [@daemonza]: https://github.com/daemonza
244
+ [@dkubb]: https://github.com/dkubb
245
+ [@ebroder]: https://github.com/ebroder
213
246
  [@fny]: https://github.com/fny
214
247
  [@markiz]: https://github.com/markiz
248
+ [@martikaljuve]: https://github.com/martikaljuve
215
249
  [@mat813]: https://github.com/mat813
250
+ [@mbj]: https://github.com/mbj
251
+ [@mrbinky3000]: https://github.com/mrbinky3000
216
252
  [@napcs]: https://github.com/napcs
217
253
  [@netzpirat]: https://github.com/netzpirat
218
254
  [@nex3]: https://github.com/nex3
@@ -220,9 +256,8 @@
220
256
  [@rymai]: https://github.com/rymai
221
257
  [@scottdavis]: https://github.com/scottdavis
222
258
  [@sunaku]: https://github.com/sunaku
259
+ [@tarsolya]: https://github.com/tarsolya
223
260
  [@textgoeshere]: https://github.com/textgoeshere
224
261
  [@thibaudgg]: https://github.com/thibaudgg
225
- [@tarsolya]: https://github.com/tarsolya
226
262
  [@vongruenigen]: https://github.com/vongruenigen
227
263
  [@zanker]: https://github.com/zanker
228
- [WDM]: https://github.com/Maher4Ever/wdm
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Listen [![Build Status](https://secure.travis-ci.org/guard/listen.png?branch=master)](http://travis-ci.org/guard/listen)
1
+ # Listen [![Gem Version](https://badge.fury.io/rb/listen.png)](http://badge.fury.io/rb/listen) [![Build Status](https://secure.travis-ci.org/guard/listen.png?branch=master)](http://travis-ci.org/guard/listen) [![Dependency Status](https://gemnasium.com/guard/listen.png)](https://gemnasium.com/guard/listen) [![Code Climate](https://codeclimate.com/github/guard/listen.png)](https://codeclimate.com/github/guard/listen) [![Coverage Status](https://coveralls.io/repos/guard/listen/badge.png?branch=master)](https://coveralls.io/r/guard/listen)
2
2
 
3
3
  The Listen gem listens to file modifications and notifies you about the changes.
4
4
 
@@ -11,22 +11,50 @@ The Listen gem listens to file modifications and notifies you about the changes.
11
11
  * Detects file modification, addition and removal.
12
12
  * Checksum comparison for modifications made under the same second.
13
13
  * Allows supplying regexp-patterns to ignore and filter paths for better results.
14
- * Tested on all Ruby environments via [travis-ci](http://travis-ci.org/guard/listen).
14
+ * Tested on all Ruby environments via [Travis CI](https://travis-ci.org/guard/listen).
15
15
 
16
16
  ## Install
17
17
 
18
- ``` bash
19
- gem install listen
18
+ ### Using Bundler
19
+
20
+ The simplest way to install Listen is to use Bundler.
21
+
22
+ Add Listen to your Gemfile:
23
+
24
+ ```ruby
25
+ group :development do
26
+ gem 'listen'
27
+ end
28
+ ```
29
+
30
+ and install it by running Bundler:
31
+
32
+ ```bash
33
+ $ bundle
34
+ ```
35
+
36
+ ### Install the gem with RubyGems
37
+
38
+ ```bash
39
+ $ gem install listen
40
+ ```
41
+
42
+ ### On Windows
43
+
44
+ If your are on Windows and using Ruby MRI >= 1.9.2 you can try to use the [`wdm`](https://github.com/Maher4Ever/wdm) instead of polling.
45
+ Please add the following to your Gemfile:
46
+
47
+ ```ruby
48
+ require 'rbconfig'
49
+ gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i
20
50
  ```
21
51
 
22
52
  ## Usage
23
53
 
24
54
  There are **two ways** to use Listen:
25
55
 
26
- 1. Call `Listen.to` with either a single directory or multiple directories, then define the `change` callback in a block.
27
- 2. Create a `listener` object and use it in an (ARel style) chainable way.
28
-
29
- Feel free to give your feeback via [Listen issues](https://github.com/guard/listen/issues)
56
+ 1. Block API: Call `Listen.to`/`Listen.to!` with either a single directory or multiple directories, then define the `change` callback in a block.
57
+ 2. "Object" API: Create a `listener` object and use it in a chainable way.
30
58
 
31
59
  ### Block API
32
60
 
@@ -52,10 +80,11 @@ listener = listener.latency(0.5)
52
80
  listener = listener.force_polling(true)
53
81
  listener = listener.polling_fallback_message(false)
54
82
  listener = listener.change(&callback)
55
- listener.start # blocks execution!
83
+ listener.start
56
84
  ```
57
85
 
58
- ### Chainable
86
+ **Note**: All the "Object" API methods except `start`/`start!` return the listener
87
+ and are thus chainable:
59
88
 
60
89
  ``` ruby
61
90
  Listen.to('dir/path/to/listen')
@@ -65,7 +94,7 @@ Listen.to('dir/path/to/listen')
65
94
  .force_polling(true)
66
95
  .polling_fallback_message('custom message')
67
96
  .change(&callback)
68
- .start # blocks execution!
97
+ .start
69
98
  ```
70
99
 
71
100
  ### Pause/Unpause
@@ -74,35 +103,11 @@ Listener can also easily be paused/unpaused:
74
103
 
75
104
  ``` ruby
76
105
  listener = Listen.to('dir/path/to/listen')
77
- listener.start(false) # non-blocking mode
106
+ listener.start # non-blocking mode
78
107
  listener.pause # stop listening to changes
79
108
  listener.paused? # => true
80
- listener.unpause
81
- listener.stop
82
- ```
83
-
84
- ## Listening to changes on multiple directories
85
-
86
- The Listen gem provides the `MultiListener` class to watch multiple directories and
87
- handle their changes from a single listener:
88
-
89
- ```ruby
90
- listener = Listen::MultiListener.new('app/css', 'app/js')
91
- listener.latency(0.5)
92
-
93
- # Configure the listener to your needs...
94
-
95
- listener.start # blocks execution!
96
- ````
97
-
98
- For an easier access, the `Listen.to` method can also be used to create a multi-listener:
99
-
100
- ``` ruby
101
- listener = Listen.to('app/css', 'app/js')
102
- .ignore(%r{^vendor/}) # both js/vendor and css/vendor will be ignored
103
- .change(&assets_callback)
104
-
105
- listener.start # blocks execution!
109
+ listener.unpause # start listening to changes again
110
+ listener.stop # stop completely the listener
106
111
  ```
107
112
 
108
113
  ## Changes callback
@@ -112,7 +117,7 @@ The registered callback gets invoked, when there are changes, with **three** par
112
117
  `modified_paths`, `added_paths` and `removed_paths` in that particular order.
113
118
 
114
119
  You can register a callback in two ways. The first way is by passing a block when calling
115
- the `Listen.to` method or when initializing a listener object:
120
+ the `Listen.to`/`Listen.to!` method or when initializing a listener object:
116
121
 
117
122
  ```ruby
118
123
  Listen.to('path/to/app') do |modified, added, removed|
@@ -127,7 +132,7 @@ end
127
132
 
128
133
  ```
129
134
 
130
- The second way to register a callback is be calling the `change` method on any
135
+ The second way to register a callback is by calling the `#change` method on a
131
136
  listener passing it a block:
132
137
 
133
138
  ```ruby
@@ -139,7 +144,7 @@ end
139
144
  listener = Listen.to('dir')
140
145
  listener.change(&callback) # convert the callback to a block and register it
141
146
 
142
- listener.start # blocks execution
147
+ listener.start
143
148
  ```
144
149
 
145
150
  ### Paths in callbacks
@@ -168,7 +173,7 @@ Listen.to('/home/user/app/css', :relative_paths => true) do |modified, added, re
168
173
  end
169
174
  ```
170
175
 
171
- Passing the `:relative_paths => true` option won't work when listeneing to multiple
176
+ Passing the `:relative_paths => true` option won't work when listening to multiple
172
177
  directories:
173
178
 
174
179
  ```ruby
@@ -181,29 +186,30 @@ end
181
186
 
182
187
  ## Options
183
188
 
184
- These options can be set through `Listen.to` params or via methods (see the "Object" API)
189
+ All the following options can be set through the `Listen.to`/`Listen.to!` params
190
+ or via ["Object" API](#object-api) methods:
185
191
 
186
192
  ```ruby
187
- :filter => /\.rb$/, /\.coffee$/ # Filter files to listen to via a regexps list.
188
- # default: none
193
+ :ignore => %r{app/CMake/}, /\.pid$/ # Ignore a list of paths (root directory or sub-dir)
194
+ # default: See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::DirectoryRecord
189
195
 
190
- :ignore => %r{app/CMake/}, /\.pid$/ # Ignore a list of paths (root directory or sub-dir)
191
- # default: See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::DirectoryRecord
196
+ :filter => /\.rb$/, /\.coffee$/ # Filter files to listen to via a regexps list.
197
+ # default: none
192
198
 
193
- :latency => 0.5 # Set the delay (**in seconds**) between checking for changes
194
- # default: 0.25 sec (1.0 sec for polling)
199
+ :latency => 0.5 # Set the delay (**in seconds**) between checking for changes
200
+ # default: 0.25 sec (1.0 sec for polling)
195
201
 
196
- :relative_paths => true # Enable the use of relative paths in the callback.
197
- # default: false
202
+ :force_polling => true # Force the use of the polling adapter
203
+ # default: none
198
204
 
199
- :force_polling => true # Force the use of the polling adapter
200
- # default: none
205
+ :polling_fallback_message => 'custom message' # Set a custom polling fallback message (or disable it with false)
206
+ # default: "Listen will be polling for changes. Learn more at https://github.com/guard/listen#polling-fallback."
201
207
 
202
- :polling_fallback_message => 'custom message' # Set a custom polling fallback message (or disable it with `false`)
203
- # default: "WARNING: Listen fallen back to polling, learn more at https://github.com/guard/listen#fallback."
208
+ :relative_paths => true # Enable the use of relative paths in the callback.
209
+ # default: false
204
210
  ```
205
211
 
206
- ### The patterns for filtering and ignoring paths
212
+ ### Note on the patterns for ignoring and filtering paths
207
213
 
208
214
  Just like the unix convention of beginning absolute paths with the
209
215
  directory-separator (forward slash `/` in unix) and with no prefix for relative paths,
@@ -217,40 +223,49 @@ and not `%r{/build/}`.
217
223
 
218
224
  Use `#filter!` and `#ignore!` methods to overwrites default patterns.
219
225
 
220
- ### Non-blocking listening to changes
226
+ ## Blocking listening to changes
227
+
228
+ Calling `Listen.to` with a block doesn't block the current thread. If you want
229
+ to block the current thread instead until the listener is stopped (which needs
230
+ to be done from another thread), you can use `Listen.to!`.
231
+
232
+ Similarly, if you're using the "Object" API, you can use `#start!` instead of `#start` to block the
233
+ current thread until the listener is stopped.
221
234
 
222
- Starting a listener blocks the current thread by default. That means any code after the
223
- `start` call won't be run until the listener is stopped (which needs to be done from another thread).
235
+ Here is an example of using a listener in the blocking mode:
224
236
 
225
- For advanced usage there is an option to disable this behavior and have the listener start working
226
- in the background without blocking. To enable non-blocking listening the `start` method of
227
- the listener (be it `Listener` or `MultiListener`) needs to be called with `false` as a parameter.
237
+ ```ruby
238
+ Listen.to!('dir/path/to/listen') # block execution
239
+
240
+ # Code here will not run until the listener is stopped
241
+
242
+ ```
228
243
 
229
- Here is an example of using a listener in the non-blocking mode:
244
+ Here is an example of using a listener started with the "Object" API in blocking mode:
230
245
 
231
246
  ```ruby
232
247
  listener = Listen.to('dir/path/to/listen')
233
- listener.start(false) # doesn't block execution
248
+ listener.start! # block execution
234
249
 
235
- # Code here will run immediately after starting the listener
250
+ # Code here will not run until the listener is stopped
236
251
 
237
252
  ```
238
253
 
239
- **note**: Using the `Listen.to` helper-method with a callback-block will always
240
- block execution. See the "Block API" section for an example.
254
+ **Note**: Using the `Listen.to!` helper-method with or without a callback-block
255
+ will always start the listener right away and block execution of the current thread.
241
256
 
242
257
  ## Listen adapters
243
258
 
244
259
  The Listen gem has a set of adapters to notify it when there are changes.
245
- There are 3 OS-specific adapters to support Mac, Linux, *BSD and Windows. These adapters are fast
246
- as they use some system-calls to implement the notifying function.
260
+ There are 4 OS-specific adapters to support Mac, Linux, *BSD and Windows.
261
+ These adapters are fast as they use some system-calls to implement the notifying function.
247
262
 
248
263
  There is also a polling adapter which is a cross-platform adapter and it will
249
264
  work on any system. This adapter is unfortunately slower than the rest of the adapters.
250
265
 
251
266
  The Listen gem will choose the best and working adapter for your machine automatically. If you
252
267
  want to force the use of the polling adapter, either use the `:force_polling` option
253
- while initializing the listener or call the `force_polling` method on your listener
268
+ while initializing the listener or call the `#force_polling` method on your listener
254
269
  before starting it.
255
270
 
256
271
  ## Polling fallback
@@ -259,11 +274,12 @@ When a OS-specific adapter doesn't work the Listen gem automatically falls back
259
274
  Here are some things you could try to avoid the polling fallback:
260
275
 
261
276
  * [Update your Dropbox client](http://www.dropbox.com/downloading) (if used).
262
- * Increase latency. (Please [open an issue](https://github.com/guard/listen/issues/new) if you think that default is too low.)
277
+ * Increase latency. (Please [open an issue](https://github.com/guard/listen/issues/new)
278
+ if you think that default is too low.)
263
279
  * Move or rename the listened folder.
264
280
  * Update/reboot your OS.
265
281
 
266
- If your application keeps using the polling-adapter and you can't figure out why, feel free to [open an issue](https://github.com/guard/listen/issues/new) (and be sure to give all the details).
282
+ If your application keeps using the polling-adapter and you can't figure out why, feel free to [open an issue](https://github.com/guard/listen/issues/new) (and be sure to [give all the details](https://github.com/guard/listen/blob/master/CONTRIBUTING.md)).
267
283
 
268
284
  ## Development [![Dependency Status](https://gemnasium.com/guard/listen.png?branch=master)](https://gemnasium.com/guard/listen)
269
285
 
@@ -273,16 +289,16 @@ If your application keeps using the polling-adapter and you can't figure out why
273
289
  Pull requests are very welcome! Please try to follow these simple rules if applicable:
274
290
 
275
291
  * Please create a topic branch for every separate change you make.
276
- * Make sure your patches are well tested. All specs run with `rake spec:portability` must pass.
292
+ * Make sure your patches are well tested. All specs must pass on [Travis CI](https://travis-ci.org/guard/listen).
277
293
  * Update the [Yard](http://yardoc.org/) documentation.
278
- * Update the README.
279
- * Update the CHANGELOG for noteworthy changes.
294
+ * Update the [README](https://github.com/guard/listen/blob/master/README.md).
295
+ * Update the [CHANGELOG](https://github.com/guard/listen/blob/master/CHANGELOG.md) for noteworthy changes (don't forget to run `bundle exec pimpmychangelog` and watch the magic happen)!
280
296
  * Please **do not change** the version number.
281
297
 
282
298
  For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on
283
299
  `#guard` (irc.freenode.net).
284
300
 
285
- ## Acknowledgment
301
+ ## Acknowledgments
286
302
 
287
303
  * [Michael Kessler (netzpirat)][] for having written the [initial specs](https://github.com/guard/listen/commit/1e457b13b1bb8a25d2240428ce5ed488bafbed1f).
288
304
  * [Travis Tilley (ttilley)][] for this awesome work on [fssm][] & [rb-fsevent][].
@@ -311,5 +327,6 @@ For questions please join us in our [Google group](http://groups.google.com/grou
311
327
  [rb-inotify]: https://github.com/nex3/rb-inotify
312
328
  [stereobooster]: https://github.com/stereobooster
313
329
  [rb-fchange]: https://github.com/stereobooster/rb-fchange
330
+ [rb-kqueue]: https://github.com/mat813/rb-kqueue
314
331
  [Yehuda Katz (wycats)]: https://github.com/wycats
315
332
  [vigilo]: https://github.com/wycats/vigilo