listen 3.1.5 → 3.2.1
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.
- checksums.yaml +5 -5
- data/CONTRIBUTING.md +8 -1
- data/README.md +25 -8
- data/lib/listen.rb +0 -5
- data/lib/listen/adapter/darwin.rb +25 -38
- data/lib/listen/directory.rb +6 -0
- data/lib/listen/queue_optimizer.rb +4 -4
- data/lib/listen/silencer.rb +3 -0
- data/lib/listen/version.rb +1 -1
- metadata +14 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e9a53907593c7c8390f895d361bce34873381883dbd033e02d1706e2e28c13d1
|
4
|
+
data.tar.gz: 5a8dfdc3c74345e7283b5f5aee13b5ded0f3f44c8fecaf7027551eb2359ecdae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5cbabed841e265c54aebfff999d306f5a91590e5e5abe8f9867c5ea9e66caa4d952acc7e7b8be10c2f1ea0a77b0ff4a07d653ec45d3009e149b5faa8331a689
|
7
|
+
data.tar.gz: 76c990e22b861cae3d9c764a290fab1ed90f6547b9c1329c92be797b8d99364ae21cb3367a84e8064e6834c9a3b76ab440a8c597f0dcacae1e06b1991e39c303
|
data/CONTRIBUTING.md
CHANGED
@@ -31,8 +31,15 @@ Pull requests are very welcome! Please try to follow these simple rules if appli
|
|
31
31
|
* Make sure your patches are well tested. All specs run with `rake spec` must pass.
|
32
32
|
* Update the [Yard](http://yardoc.org/) documentation.
|
33
33
|
* Update the [README](https://github.com/guard/listen/blob/master/README.md).
|
34
|
-
* Update the [CHANGELOG](https://github.com/guard/listen/blob/master/CHANGELOG.md) for noteworthy changes.
|
35
34
|
* Please **do not change** the version number.
|
36
35
|
|
36
|
+
The title of your PR will automatically be included in the release notes for the next version of the gem. A maintainer can add one of the following GitHub labels to the PR to automatically categorize it when the release notes are generated:
|
37
|
+
|
38
|
+
- ⚠️ Breaking
|
39
|
+
- ✨ Feature
|
40
|
+
- 🐛 Bug Fix
|
41
|
+
- 📚 Docs
|
42
|
+
- 🏠 Housekeeping
|
43
|
+
|
37
44
|
For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on
|
38
45
|
`#guard` (irc.freenode.net).
|
data/README.md
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
## IMPORTANT:
|
2
|
-
|
3
|
-
### (To install for older versions, update Bundler to a prerelease version: `gem install bundler --pre` and Bundler should correctly resolve to an earlier gems for your given Ruby version).
|
1
|
+
## IMPORTANT: If you cannot install Listen (e.g. on Travis/CI builds), [a workaround is here](https://github.com/guard/listen/wiki/Ruby-version-requirements)
|
4
2
|
|
5
3
|
: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
4
|
|
7
5
|
# Listen
|
8
6
|
|
9
|
-
[](http://badge.fury.io/rb/listen) [](https://travis-ci.org/guard/listen) [](https://codeclimate.com/github/guard/listen) [](https://coveralls.io/r/guard/listen)
|
10
8
|
|
11
9
|
The Listen gem listens to file modifications and notifies you about the changes.
|
12
10
|
|
@@ -31,7 +29,8 @@ The Listen gem listens to file modifications and notifies you about the changes.
|
|
31
29
|
* Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work.
|
32
30
|
* Windows and \*BSD adapter aren't continuously and automatically tested.
|
33
31
|
* OSX adapter has some performance limitations ([#342](https://github.com/guard/listen/issues/342)).
|
34
|
-
* Ruby < 2.2.x is no longer supported - upgrade to Ruby 2.2 or 2.3
|
32
|
+
* Ruby < 2.2.x is no longer supported - upgrade to Ruby 2.2 or 2.3.
|
33
|
+
* 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
34
|
|
36
35
|
Pull requests or help is very welcome for these.
|
37
36
|
|
@@ -170,7 +169,7 @@ polling_fallback_message: 'custom message' # Set a custom polling fallback
|
|
170
169
|
|
171
170
|
## Debugging
|
172
171
|
|
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.
|
172
|
+
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.
|
174
173
|
|
175
174
|
You can also set `Listen.logger` to a custom logger.
|
176
175
|
|
@@ -263,11 +262,29 @@ Pull requests are very welcome! Please try to follow these simple rules if appli
|
|
263
262
|
For questions please join us in our [Google group](http://groups.google.com/group/guard-dev) or on
|
264
263
|
`#guard` (irc.freenode.net).
|
265
264
|
|
265
|
+
## Releasing
|
266
|
+
|
267
|
+
### Prerequisites
|
268
|
+
|
269
|
+
* You must have commit rights to the GitHub repository.
|
270
|
+
* You must have push rights for rubygems.org.
|
271
|
+
|
272
|
+
### How to release
|
273
|
+
|
274
|
+
1. Run `bundle install` to make sure that you have all the gems necessary for testing and releasing.
|
275
|
+
2. **Ensure all tests are passing by running `bundle exec rake`.**
|
276
|
+
3. Determine which would be the correct next version number according to [semver](http://semver.org/).
|
277
|
+
4. Update the version in `./lib/listen/version.rb`.
|
278
|
+
5. Update the version in the Install section of `./README.md` (`gem 'listen', '~> X.Y'`).
|
279
|
+
6. Commit the version in a single commit, the message should be "Preparing vX.Y.Z"
|
280
|
+
7. Run `bundle exec rake release:full`; this will tag, push to GitHub, and publish to rubygems.org.
|
281
|
+
8. Update and publish the release notes on the [GitHub releases page](https://github.com/guard/listen/releases) if necessary
|
282
|
+
|
266
283
|
## Acknowledgments
|
267
284
|
|
268
285
|
* [Michael Kessler (netzpirat)][] for having written the [initial specs](https://github.com/guard/listen/commit/1e457b13b1bb8a25d2240428ce5ed488bafbed1f).
|
269
286
|
* [Travis Tilley (ttilley)][] for this awesome work on [fssm][] & [rb-fsevent][].
|
270
|
-
* [
|
287
|
+
* [Natalie Weizenbaum (nex3)][] for [rb-inotify][], a thorough inotify wrapper.
|
271
288
|
* [Mathieu Arnold (mat813)][] for [rb-kqueue][], a simple kqueue wrapper.
|
272
289
|
* [Maher Sallam][] for [wdm][], windows support wouldn't exist without him.
|
273
290
|
* [Yehuda Katz (wycats)][] for [vigilo][], that has been a great source of inspiration.
|
@@ -287,7 +304,7 @@ For questions please join us in our [Google group](http://groups.google.com/grou
|
|
287
304
|
[fssm]: https://github.com/ttilley/fssm
|
288
305
|
[rb-fsevent]: https://github.com/thibaudgg/rb-fsevent
|
289
306
|
[Mathieu Arnold (mat813)]: https://github.com/mat813
|
290
|
-
[
|
307
|
+
[Natalie Weizenbaum (nex3)]: https://github.com/nex3
|
291
308
|
[rb-inotify]: https://github.com/nex3/rb-inotify
|
292
309
|
[stereobooster]: https://github.com/stereobooster
|
293
310
|
[rb-fchange]: https://github.com/stereobooster/rb-fchange
|
data/lib/listen.rb
CHANGED
@@ -4,11 +4,6 @@ require 'listen/listener'
|
|
4
4
|
|
5
5
|
require 'listen/internals/thread_pool'
|
6
6
|
|
7
|
-
# Show warnings about vulnerabilities, bugs and outdated Rubies, since previous
|
8
|
-
# versions aren't tested or officially supported.
|
9
|
-
require 'ruby_dep/warning'
|
10
|
-
RubyDep::Warning.new.show_warnings
|
11
|
-
|
12
7
|
# Always set up logging by default first time file is required
|
13
8
|
#
|
14
9
|
# NOTE: If you need to clear the logger completely, do so *after*
|
@@ -22,11 +22,11 @@ module Listen
|
|
22
22
|
EOS
|
23
23
|
|
24
24
|
def self.usable?
|
25
|
-
require 'rb-fsevent'
|
26
25
|
version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version]
|
27
26
|
return false unless version
|
28
27
|
return true if version.to_i >= 13 # darwin13 is OS X 10.9
|
29
28
|
|
29
|
+
require 'rb-fsevent'
|
30
30
|
fsevent_version = Gem::Version.new(FSEvent::VERSION)
|
31
31
|
return true if fsevent_version <= Gem::Version.new('0.9.4')
|
32
32
|
Kernel.warn INCOMPATIBLE_GEM_VERSION
|
@@ -35,58 +35,45 @@ module Listen
|
|
35
35
|
|
36
36
|
private
|
37
37
|
|
38
|
-
# NOTE: each directory gets a DIFFERENT callback!
|
39
38
|
def _configure(dir, &callback)
|
40
|
-
|
41
|
-
|
42
|
-
@workers ||= ::Queue.new
|
43
|
-
@workers << FSEvent.new.tap do |worker|
|
44
|
-
_log :debug, "fsevent: watching: #{dir.to_s.inspect}"
|
45
|
-
worker.watch(dir.to_s, opts, &callback)
|
46
|
-
end
|
39
|
+
@callbacks[dir] = callback
|
47
40
|
end
|
48
41
|
|
49
42
|
def _run
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
_run_worker(
|
43
|
+
require 'rb-fsevent'
|
44
|
+
worker = FSEvent.new
|
45
|
+
dirs_to_watch = @callbacks.keys.map(&:to_s)
|
46
|
+
_log(:info) { "fsevent: watching: #{dirs_to_watch.inspect}" }
|
47
|
+
worker.watch(dirs_to_watch, { latency: options.latency }, &method(:_process_changes))
|
48
|
+
Listen::Internals::ThreadPool.add { _run_worker(worker) }
|
56
49
|
end
|
57
50
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
51
|
+
def _process_changes(dirs)
|
52
|
+
dirs.each do |dir|
|
53
|
+
dir = Pathname.new(dir.sub(%r{\/$}, ''))
|
54
|
+
|
55
|
+
@callbacks.each do |watched_dir, callback|
|
56
|
+
if watched_dir.eql?(dir) || Listen::Directory.ascendant_of?(watched_dir, dir)
|
57
|
+
callback.call(dir)
|
58
|
+
end
|
59
|
+
end
|
66
60
|
end
|
67
61
|
end
|
68
62
|
|
63
|
+
def _process_event(dir, path)
|
64
|
+
_log(:debug) { "fsevent: processing path: #{path.inspect}" }
|
65
|
+
# TODO: does this preserve symlinks?
|
66
|
+
rel_path = path.relative_path_from(dir).to_s
|
67
|
+
_queue_change(:dir, dir, rel_path, recursive: true)
|
68
|
+
end
|
69
|
+
|
69
70
|
def _run_worker(worker)
|
70
|
-
_log
|
71
|
+
_log(:debug) { "fsevent: running worker: #{worker.inspect}" }
|
71
72
|
worker.run
|
72
73
|
rescue
|
73
74
|
format_string = 'fsevent: running worker failed: %s:%s called from: %s'
|
74
75
|
_log_exception format_string, caller
|
75
76
|
end
|
76
|
-
|
77
|
-
def _run_workers_in_background(workers)
|
78
|
-
workers.each do |worker|
|
79
|
-
# NOTE: while passing local variables to the block below is not
|
80
|
-
# thread safe, using 'worker' from the enumerator above is ok
|
81
|
-
Listen::Internals::ThreadPool.add { _run_worker(worker) }
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def _to_array(queue)
|
86
|
-
workers = []
|
87
|
-
workers << queue.pop until queue.empty?
|
88
|
-
workers
|
89
|
-
end
|
90
77
|
end
|
91
78
|
end
|
92
79
|
end
|
data/lib/listen/directory.rb
CHANGED
@@ -53,6 +53,12 @@ module Listen
|
|
53
53
|
raise
|
54
54
|
end
|
55
55
|
|
56
|
+
def self.ascendant_of?(base, other)
|
57
|
+
other.ascend do |ascendant|
|
58
|
+
break true if base == ascendant
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
56
62
|
def self._async_changes(snapshot, path, previous, options)
|
57
63
|
fail "Not a Pathname: #{path.inspect}" unless path.respond_to?(:children)
|
58
64
|
previous.each do |entry, data|
|
@@ -107,15 +107,15 @@ module Listen
|
|
107
107
|
def _detect_possible_editor_save(changes)
|
108
108
|
return unless changes.size == 2
|
109
109
|
|
110
|
-
from_type =
|
111
|
-
to_type =
|
110
|
+
from_type = from = nil
|
111
|
+
to_type = to_dir = to = nil
|
112
112
|
|
113
113
|
changes.each do |data|
|
114
114
|
case data[1]
|
115
115
|
when :moved_from
|
116
|
-
from_type,
|
116
|
+
from_type, _from_change, _, from, = data
|
117
117
|
when :moved_to
|
118
|
-
to_type,
|
118
|
+
to_type, _to_change, to_dir, to, = data
|
119
119
|
else
|
120
120
|
return nil
|
121
121
|
end
|
data/lib/listen/silencer.rb
CHANGED
data/lib/listen/version.rb
CHANGED
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.1
|
4
|
+
version: 3.2.1
|
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:
|
11
|
+
date: 2019-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rb-fsevent
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.10'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.10.3
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
29
|
+
version: '0.10'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.10.3
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rb-inotify
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '0.9'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.9.
|
42
|
+
version: 0.9.10
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,35 +49,21 @@ dependencies:
|
|
49
49
|
version: '0.9'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.9.
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: ruby_dep
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '1.2'
|
60
|
-
type: :runtime
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '1.2'
|
52
|
+
version: 0.9.10
|
67
53
|
- !ruby/object:Gem::Dependency
|
68
54
|
name: bundler
|
69
55
|
requirement: !ruby/object:Gem::Requirement
|
70
56
|
requirements:
|
71
|
-
- - "
|
57
|
+
- - ">="
|
72
58
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
59
|
+
version: '0'
|
74
60
|
type: :development
|
75
61
|
prerelease: false
|
76
62
|
version_requirements: !ruby/object:Gem::Requirement
|
77
63
|
requirements:
|
78
|
-
- - "
|
64
|
+
- - ">="
|
79
65
|
- !ruby/object:Gem::Version
|
80
|
-
version: '
|
66
|
+
version: '0'
|
81
67
|
description: The Listen gem listens to file modifications and notifies you about the
|
82
68
|
changes. Works everywhere!
|
83
69
|
email: thibaud@thibaud.gg
|
@@ -137,17 +123,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
123
|
version: '2.2'
|
138
124
|
- - ">="
|
139
125
|
- !ruby/object:Gem::Version
|
140
|
-
version: 2.2.
|
126
|
+
version: 2.2.7
|
141
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - ">="
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: '0'
|
146
132
|
requirements: []
|
147
|
-
|
148
|
-
rubygems_version: 2.5.1
|
133
|
+
rubygems_version: 3.0.6
|
149
134
|
signing_key:
|
150
135
|
specification_version: 4
|
151
136
|
summary: Listen to file modifications
|
152
137
|
test_files: []
|
153
|
-
has_rdoc:
|