listen 3.3.0.pre.2 → 3.3.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82d32d20751964de477dd8c2ff8af48cc0c70558b323c1043b37d5bf9183c3ba
4
- data.tar.gz: fb40a33b41e0bf52ce30303fc88a7fb1dd35a9d56e2e920fccf598fcd7193c17
3
+ metadata.gz: 1d6639e347ad2eafe447bbb0c00b50ceab5e3f7a6b3bdce169482c910765198d
4
+ data.tar.gz: 617efbcc3815ea658bc886e02d9ee24a0dd142cc0273442d4323d55766c5d8ed
5
5
  SHA512:
6
- metadata.gz: 14e679e027bb5c100eaf438f10ec96ce5336465366facf7559a19ed6fa23d0c6e89f72eba25fb53a1e689ca08d0572d54399826b3d78d5cb354f2b2c7d105b61
7
- data.tar.gz: 4b4f93d99b7519d06a7302152e8d86332edb8a656caef7c1b164596d79c221d539ad0a29481709915070945e46fb1c4661bde3368f0e9c55cd277ffe52bc8b13
6
+ metadata.gz: 5e55c50925feb8a8909978344e3061cec23ae2ee9cdba2583928da45bb907eb17284e7fb94aad431c9b1ba141f6401f98f131c6b774fe49619ea7bf353c6f352
7
+ data.tar.gz: 221ca770caf975a3bd686704e93888a852cba10e725f582c22076a42d0540b085f929faaf474b9d81690beb0c88fb647107e3bf296e738bd913d1c0f5097a442
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Listen
2
2
 
3
- The Listen gem listens to file modifications and notifies you about the changes.
3
+ The `listen` gem listens to file modifications and notifies you about the changes.
4
4
 
5
- :exclamation: Listen is currently accepting more maintainers. Please [read this](https://github.com/guard/guard/wiki/Maintainers) if you're interested in joining the team.
5
+ :exclamation: `Listen` is currently accepting more maintainers. Please [read this](https://github.com/guard/guard/wiki/Maintainers) if you're interested in joining the team.
6
6
 
7
7
  [![Development Status](https://github.com/guard/listen/workflows/Development/badge.svg)](https://github.com/guard/listen/actions?workflow=Development)
8
8
  [![Gem Version](https://badge.fury.io/rb/listen.svg)](http://badge.fury.io/rb/listen)
@@ -25,37 +25,81 @@ The Listen gem listens to file modifications and notifies you about the changes.
25
25
  * Symlinked directories pointing within a watched directory are not supported ([#273](https://github.com/guard/listen/pull/273)- see [Duplicate directory errors](https://github.com/guard/listen/wiki/Duplicate-directory-errors)).
26
26
  * No directory/adapter-specific configuration options.
27
27
  * Support for plugins planned for future.
28
- * TCP functionality was removed in Listen [3.0.0](https://github.com/guard/listen/releases/tag/v3.0.0) ([#319](https://github.com/guard/listen/issues/319), [#218](https://github.com/guard/listen/issues/218)). There are plans to extract this feature to separate gems ([#258](https://github.com/guard/listen/issues/258)), until this is finished, you can use by locking the `listen` gem to version `'~> 2.10'`.
28
+ * TCP functionality was removed in `listen` [3.0.0](https://github.com/guard/listen/releases/tag/v3.0.0) ([#319](https://github.com/guard/listen/issues/319), [#218](https://github.com/guard/listen/issues/218)). There are plans to extract this feature to separate gems ([#258](https://github.com/guard/listen/issues/258)), until this is finished, you can use by locking the `listen` gem to version `'~> 2.10'`.
29
29
  * Some filesystems won't work without polling (VM/Vagrant Shared folders, NFS, Samba, sshfs, etc.).
30
30
  * Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work.
31
31
  * Windows and \*BSD adapter aren't continuously and automatically tested.
32
32
  * OSX adapter has some performance limitations ([#342](https://github.com/guard/listen/issues/342)).
33
- * Ruby < 2.2.x is no longer supported - upgrade to Ruby 2.2 or 2.3.
33
+ * FreeBSD users need patched version of rb-kqueue (as of 2020/11). See #475 for the issue, mat813/rb-kqueue#12 for the patch, and Bug 250432 in bugzilla.
34
34
  * Listeners do not notify across forked processes, if you wish for multiple processes to receive change notifications you must [listen inside of each process](https://github.com/guard/listen/issues/398#issuecomment-223957952).
35
35
 
36
36
  Pull requests or help is very welcome for these.
37
37
 
38
38
  ## Install
39
39
 
40
- The simplest way to install Listen is to use [Bundler](http://bundler.io).
40
+ The simplest way to install `listen` is to use [Bundler](http://bundler.io).
41
41
 
42
42
  ```ruby
43
- gem 'listen', '~> 3.0' # NOTE: for TCP functionality, use '~> 2.10' for now
43
+ gem 'listen', '~> 3.3' # NOTE: for TCP functionality, use '~> 2.10' for now
44
+ ```
45
+
46
+ ## Complete Example
47
+ Here is a complete example of using the `listen` gem:
48
+ ```ruby
49
+ require 'listen'
50
+
51
+ listener = Listen.to('/srv/app') do |modified, added, removed|
52
+ puts(modified: modified, added: added, removed: removed)
53
+ end
54
+ listener.start
55
+ sleep
56
+ ```
57
+ Running the above in the background, you can see the callback block being called in response to each command:
58
+ ```
59
+ $ cd /srv/app
60
+ $ touch a.txt
61
+ {:modified=>[], :added=>["/srv/app/a.txt"], :removed=>[]}
62
+
63
+ $ echo more >> a.txt
64
+ {:modified=>["/srv/app/a.txt"], :added=>[], :removed=>[]}
65
+
66
+ $ mv a.txt b.txt
67
+ {:modified=>[], :added=>["/srv/app/b.txt"], :removed=>["/srv/app/a.txt"]}
68
+
69
+ $ vi b.txt
70
+ # add a line to this new file and press ZZ to save and exit
71
+ {:modified=>["/srv/app/b.txt"], :added=>[], :removed=>[]}
72
+
73
+ $ vi c.txt
74
+ # add a line and press ZZ to save and exit
75
+ {:modified=>[], :added=>["/srv/app/c.txt"], :removed=>[]}
76
+
77
+ $ rm b.txt c.txt
78
+ {:modified=>[], :added=>[], :removed=>["/srv/app/b.txt", "/srv/app/c.txt"]}
44
79
  ```
45
80
 
46
81
  ## Usage
47
82
 
48
- Call `Listen.to` with either a single directory or multiple directories, then define the "changes" callback in a block.
83
+ Call `Listen.to` with one or more directories and the "changes" callback passed as a block.
49
84
 
50
85
  ``` ruby
51
86
  listener = Listen.to('dir/to/listen', 'dir/to/listen2') do |modified, added, removed|
52
- puts "modified absolute path: #{modified}"
53
- puts "added absolute path: #{added}"
54
- puts "removed absolute path: #{removed}"
87
+ puts "modified absolute path array: #{modified}"
88
+ puts "added absolute path array: #{added}"
89
+ puts "removed absolute path array: #{removed}"
55
90
  end
56
- listener.start # not blocking
91
+ listener.start # starts a listener thread--does not block
92
+
93
+ # do whatever you want here...just don't exit the process :)
94
+
57
95
  sleep
58
96
  ```
97
+ ## Changes Callback
98
+
99
+ Changes to the listened-to directories are reported by the listener thread in a callback.
100
+ The callback receives **three** array parameters: `modified`, `added` and `removed`, in that order.
101
+ Each of these three is always an array with 0 or more entries.
102
+ Each array entry is an absolute path.
59
103
 
60
104
  ### Pause / unpause / stop
61
105
 
@@ -76,13 +120,14 @@ listener.unpause # resumes processing changes ("start" would do the same)
76
120
  listener.stop # stop both listening to changes and processing them
77
121
  ```
78
122
 
79
- Note: While paused, Listen keeps on collecting changes in the background - to clear them, call "stop"
123
+ Note: While paused, `listen` keeps on collecting changes in the background - to clear them, call `stop`.
80
124
 
81
- Note: You should keep track of all started listeners and stop them properly on finish.
125
+ Note: You should keep track of all started listeners and `stop` them properly on finish.
82
126
 
83
127
  ### Ignore / ignore!
84
128
 
85
- Listen ignores some directories and extensions by default (See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer), you can add ignoring patterns with the `ignore` option/method or overwrite default with `ignore!` option/method.
129
+ `Listen` ignores some directories and extensions by default (See DEFAULT_IGNORED_DIRECTORIES and DEFAULT_IGNORED_EXTENSIONS in Listen::Silencer).
130
+ You can add ignoring patterns with the `ignore` option/method or overwrite default with `ignore!` option/method.
86
131
 
87
132
  ``` ruby
88
133
  listener = Listen.to('dir/path/to/listen', ignore: /\.txt/) { |modified, added, removed| # ... }
@@ -94,11 +139,11 @@ sleep
94
139
 
95
140
  Note: `:ignore` regexp patterns are evaluated against relative paths.
96
141
 
97
- Note: Ignoring paths does not improve performance, except when Polling ([#274](https://github.com/guard/listen/issues/274))
142
+ Note: Ignoring paths does not improve performance, except when Polling ([#274](https://github.com/guard/listen/issues/274)).
98
143
 
99
144
  ### Only
100
145
 
101
- Listen catches all files (less the ignored ones) by default. If you want to only listen to a specific type of file (i.e., just `.rb` extension), you should use the `only` option/method.
146
+ `Listen` watches all files (less the ignored ones) by default. If you want to only listen to a specific type of file (i.e., just `.rb` extension), you should use the `only` option/method.
102
147
 
103
148
  ``` ruby
104
149
  listener = Listen.to('dir/path/to/listen', only: /\.rb$/) { |modified, added, removed| # ... }
@@ -110,35 +155,6 @@ sleep
110
155
  Note: `:only` regexp patterns are evaluated only against relative **file** paths.
111
156
 
112
157
 
113
- ## Changes callback
114
-
115
- Changes to the listened-to directories gets reported back to the user in a callback.
116
- The registered callback gets invoked, when there are changes, with **three** parameters:
117
- `modified`, `added` and `removed` paths, in that particular order.
118
- Paths are always returned in their absolute form.
119
-
120
- Example:
121
-
122
- ```ruby
123
- listener = Listen.to('path/to/app') do |modified, added, removed|
124
- # This block will be called when there are changes.
125
- end
126
- listener.start
127
- sleep
128
- ```
129
-
130
- or ...
131
-
132
- ```ruby
133
- # Create a callback
134
- callback = Proc.new do |modified, added, removed|
135
- # This proc will be called when there are changes.
136
- end
137
- listener = Listen.to('dir', &callback)
138
- listener.start
139
- sleep
140
- ```
141
-
142
158
  ## Options
143
159
 
144
160
  All the following options can be set through the `Listen.to` after the directory path(s) params.
@@ -168,16 +184,42 @@ polling_fallback_message: 'custom message' # Set a custom polling fallback
168
184
  # default: "Listen will be polling for changes. Learn more at https://github.com/guard/listen#listen-adapters."
169
185
  ```
170
186
 
171
- ## Debugging
187
+ ## Logging and Debugging
188
+
189
+ `Listen` logs its activity to `Listen.logger`.
190
+ This is the primary method of debugging.
191
+
192
+ ### Custom Logger
193
+ You can call `Listen.logger =` to set a custom `listen` logger for the process. For example:
194
+ ```
195
+ Listen.logger = Rails.logger
196
+ ```
172
197
 
173
- Setting the environment variable `LISTEN_GEM_DEBUGGING=1` sets up the INFO level logger, while `LISTEN_GEM_DEBUGGING=2` sets up the DEBUG level logger.
198
+ ### Default Logger
199
+ If no custom logger is set, a default `listen` logger which logs to to `STDERR` will be created and assigned to `Listen.logger`.
174
200
 
175
- You can also set `Listen.logger` to a custom logger.
201
+ The default logger defaults to the `error` logging level (severity).
202
+ You can override the logging level by setting the environment variable `LISTEN_GEM_DEBUGGING=<level>`.
203
+ For `<level>`, all standard `::Logger` levels are supported, with any mix of upper-/lower-case:
204
+ ```
205
+ export LISTEN_GEM_DEBUGGING=debug # or 2 [deprecated]
206
+ export LISTEN_GEM_DEBUGGING=info # or 1 or true or yes [deprecated]
207
+ export LISTEN_GEM_DEBUGGING=warn
208
+ export LISTEN_GEM_DEBUGGING=fatal
209
+ export LISTEN_GEM_DEBUGGING=error
210
+ ```
211
+ The default of `error` will be used if an unsupported value is set.
176
212
 
213
+ Note: The alternate values `1`, `2`, `true` and `yes` shown above are deprecated and will be removed from `listen` v4.0.
177
214
 
178
- ## Listen adapters
215
+ ### Disabling Logging
216
+ If you want to disable `listen` logging, set
217
+ ```
218
+ Listen.logger = ::Logger.new('/dev/null')
219
+ ```
220
+ ## Listen Adapters
179
221
 
180
- The Listen gem has a set of adapters to notify it when there are changes.
222
+ The `Listen` gem has a set of adapters to notify it when there are changes.
181
223
 
182
224
  There are 4 OS-specific adapters to support Darwin, Linux, \*BSD and Windows.
183
225
  These adapters are fast as they use some system-calls to implement the notifying function.
@@ -185,9 +227,9 @@ These adapters are fast as they use some system-calls to implement the notifying
185
227
  There is also a polling adapter - although it's much slower than other adapters,
186
228
  it works on every platform/system and scenario (including network filesystems such as VM shared folders).
187
229
 
188
- The Darwin and Linux adapters are dependencies of the Listen gem so they work out of the box. For other adapters a specific gem will have to be added to your Gemfile, please read below.
230
+ The Darwin and Linux adapters are dependencies of the `listen` gem so they work out of the box. For other adapters a specific gem will have to be added to your Gemfile, please read below.
189
231
 
190
- The Listen gem will choose the best adapter automatically, if present. If you
232
+ The `listen` gem will choose the best adapter automatically, if present. If you
191
233
  want to force the use of the polling adapter, use the `:force_polling` option
192
234
  while initializing the listener.
193
235
 
@@ -219,31 +261,33 @@ end
219
261
 
220
262
  Please visit the [installation section of the Listen WIKI](https://github.com/guard/listen/wiki#installation) for more information and options for potential fixes.
221
263
 
222
- ### Issues and troubleshooting
264
+ ### Issues and Troubleshooting
265
+
266
+ If the gem doesn't work as expected, start by setting `LISTEN_GEM_DEBUGGING=debug` or `LISTEN_GEM_DEBUGGING=info` as described above in [Logging and Debugging](#logging-and-debugging).
223
267
 
224
- *NOTE: without providing the output after setting the `LISTEN_GEM_DEBUGGING=1` environment variable, it can be almost impossible to guess why listen is not working as expected.*
268
+ *NOTE: without providing the output after setting the `LISTEN_GEM_DEBUGGING=debug` environment variable, it is usually impossible to guess why `listen` is not working as expected.*
225
269
 
226
270
  See [TROUBLESHOOTING](https://github.com/guard/listen/wiki/Troubleshooting)
227
271
 
228
272
  ## Performance
229
273
 
230
- If Listen seems slow or unresponsive, make sure you're not using the Polling adapter (you should see a warning upon startup if you are).
274
+ If `listen` seems slow or unresponsive, make sure you're not using the Polling adapter (you should see a warning upon startup if you are).
231
275
 
232
276
  Also, if the directories you're watching contain many files, make sure you're:
233
277
 
234
278
  * not using Polling (ideally)
235
279
  * using `:ignore` and `:only` options to avoid tracking directories you don't care about (important with Polling and on MacOS)
236
- * running Listen with the `:latency` and `:wait_for_delay` options not too small or too big (depends on needs)
280
+ * running `listen` with the `:latency` and `:wait_for_delay` options not too small or too big (depends on needs)
237
281
  * not watching directories with log files, database files or other frequently changing files
238
- * not using a version of Listen prior to 2.7.7
239
- * not getting silent crashes within Listen (see LISTEN_GEM_DEBUGGING=2)
240
- * not running multiple instances of Listen in the background
282
+ * not using a version of `listen` prior to 2.7.7
283
+ * not getting silent crashes within `listen` (see `LISTEN_GEM_DEBUGGING=debug`)
284
+ * not running multiple instances of `listen` in the background
241
285
  * using a file system with atime modification disabled (ideally)
242
286
  * not using a filesystem with inaccurate file modification times (ideally), e.g. HFS, VFAT
243
287
  * not buffering to a slow terminal (e.g. transparency + fancy font + slow gfx card + lots of output)
244
288
  * ideally not running a slow encryption stack, e.g. btrfs + ecryptfs
245
289
 
246
- When in doubt, LISTEN_GEM_DEBUGGING=2 can help discover the actual events and time they happened.
290
+ When in doubt, `LISTEN_GEM_DEBUGGING=debug` can help discover the actual events and time they happened.
247
291
 
248
292
  See also [Tips and Techniques](https://github.com/guard/listen/wiki/Tips-and-Techniques).
249
293
 
@@ -11,6 +11,7 @@ module Listen
11
11
  :recursive,
12
12
  :attrib,
13
13
  :create,
14
+ :modify,
14
15
  :delete,
15
16
  :move,
16
17
  :close_write
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Listen
4
- VERSION = '3.3.0.pre.2'
4
+ VERSION = '3.3.0.pre.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: listen
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0.pre.2
4
+ version: 3.3.0.pre.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibaud Guillaume-Gentil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-31 00:00:00.000000000 Z
11
+ date: 2020-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb-fsevent