listen 3.4.1 → 3.7.0

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: 177b9383bf2b074aa676e65740451122818a165210268172b091a5528054dcde
4
- data.tar.gz: cf3e77517acd2ce09a140c34a7349eedad081d4b4bc8e0f4e80cefd35ce9363f
3
+ metadata.gz: ff9bdc7fe6e17c76745c2bd710f79322f22ebd7f7274241403f4132a575d2a7a
4
+ data.tar.gz: 3868e870e71badf618acb9f50a6d36227f722dd592360e894bb7cc9e2b5feb67
5
5
  SHA512:
6
- metadata.gz: c2d73e033027eb1f2fa455a180e7abbf344bb2889ad9af7b1d79a111d55c00b4f8481c080c94ca06d8383da6ef45481e47434a25b03aba75c74839b37bf4e8b4
7
- data.tar.gz: 30c3da7656d66f93ac25fc4202ef15bb813fdb6c4a7c90221ecdd49f32b267826082c4af20275454f0ada71e790ef5ac5ea20275302c66de5dedc36dc3bcb05d
6
+ metadata.gz: dbdddb8b8196ed73ae3e23c1bcea1396451bfd2fa36524778bbfbb98dc4565fd248d9035226c286c9feab1b92fddc61c2f0903159c8b4717c9983c535a06da70
7
+ data.tar.gz: 9942df50a62c7a88fafe9eea748e611618251db4ca5bf94850585e0529b3c6812f6658c2221c39a7160d72f5f0ce26a207e2fb1feedd404e20a9f0c34365979f
data/README.md CHANGED
@@ -25,10 +25,8 @@ The `listen` gem listens to file modifications and notifies you about the change
25
25
  * Support for plugins planned for future.
26
26
  * 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'`.
27
27
  * Some filesystems won't work without polling (VM/Vagrant Shared folders, NFS, Samba, sshfs, etc.).
28
- * Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work.
29
28
  * Windows and \*BSD adapter aren't continuously and automatically tested.
30
29
  * OSX adapter has some performance limitations ([#342](https://github.com/guard/listen/issues/342)).
31
- * 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.
32
30
  * 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).
33
31
 
34
32
  Pull requests or help is very welcome for these.
@@ -51,7 +51,7 @@ module Listen
51
51
  # TODO: separate config per directory (some day maybe)
52
52
  change_config = Change::Config.new(config.queue, config.silencer)
53
53
  config.directories.each do |dir|
54
- record = Record.new(dir)
54
+ record = Record.new(dir, config.silencer)
55
55
  snapshot = Change.new(change_config, record)
56
56
  @snapshots[dir] = snapshot
57
57
  end
@@ -24,17 +24,14 @@ module Listen
24
24
  README_URL = 'https://github.com/guard/listen'\
25
25
  '/blob/master/README.md#increasing-the-amount-of-inotify-watchers'
26
26
 
27
- INOTIFY_LIMIT_MESSAGE = <<-EOS
28
- FATAL: Listen error: unable to monitor directories for changes.
29
- Visit #{README_URL} for info on how to fix this.
30
- EOS
31
-
32
27
  def _configure(directory, &callback)
33
28
  require 'rb-inotify'
34
29
  @worker ||= ::INotify::Notifier.new
35
30
  @worker.watch(directory.to_s, *options.events, &callback)
36
31
  rescue Errno::ENOSPC
37
- abort(INOTIFY_LIMIT_MESSAGE)
32
+ raise ::Listen::Error::INotifyMaxWatchesExceeded, <<~EOS
33
+ Unable to monitor directories for changes because iNotify max watches exceeded. See #{README_URL} .
34
+ EOS
38
35
  end
39
36
 
40
37
  def _run
data/lib/listen/error.rb CHANGED
@@ -6,5 +6,6 @@ module Listen
6
6
  class Error < RuntimeError
7
7
  class NotStarted < Error; end
8
8
  class SymlinkLoop < Error; end
9
+ class INotifyMaxWatchesExceeded < Error; end
9
10
  end
10
11
  end
data/lib/listen/file.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest/md5'
3
+ require 'digest'
4
4
 
5
5
  module Listen
6
6
  class File
@@ -53,7 +53,7 @@ module Listen
53
53
  # then at ???14.998, but the fstat time would be ???14.0 in
54
54
  # both cases).
55
55
  #
56
- # If change happend at ???14.999997, the mtime is 14.0, so for
56
+ # If change happened at ???14.999997, the mtime is 14.0, so for
57
57
  # an mtime=???14.0 we assume it could even be almost ???15.0
58
58
  #
59
59
  # So if Time.now.to_f is ???15.999998 and stat reports mtime
@@ -67,9 +67,11 @@ module Listen
67
67
  #
68
68
  return if data[:mtime].to_i + 2 <= Time.now.to_f
69
69
 
70
- md5 = Digest::MD5.file(path).digest
71
- record.update_file(rel_path, data.merge(md5: md5))
72
- :modified if record_data[:md5] && md5 != record_data[:md5]
70
+ sha = Digest::SHA256.file(path).digest
71
+ record.update_file(rel_path, data.merge(sha: sha))
72
+ if record_data[:sha] && sha != record_data[:sha]
73
+ :modified
74
+ end
73
75
  rescue SystemCallError
74
76
  record.unset_path(rel_path)
75
77
  :removed
data/lib/listen/record.rb CHANGED
@@ -11,9 +11,10 @@ module Listen
11
11
 
12
12
  attr_reader :root
13
13
 
14
- def initialize(directory)
14
+ def initialize(directory, silencer)
15
15
  @tree = _auto_hash
16
16
  @root = directory.to_s
17
+ @silencer = silencer
17
18
  end
18
19
 
19
20
  def add_dir(rel_path)
@@ -98,6 +99,8 @@ module Listen
98
99
 
99
100
  def _fast_build_dir(remaining, symlink_detector)
100
101
  entry = remaining.pop
102
+ return if @silencer.silenced?(entry.record_dir_key, :dir)
103
+
101
104
  children = entry.children # NOTE: children() implicitly tests if dir
102
105
  symlink_detector.verify_unwatched!(entry)
103
106
  children.each { |child| remaining << child }
@@ -57,23 +57,21 @@ module Listen
57
57
  | ~
58
58
  )$}x.freeze
59
59
 
60
+ # TODO: deprecate these mutators; use attr_reader instead
60
61
  attr_accessor :only_patterns, :ignore_patterns
61
62
 
62
- def initialize
63
- configure({})
63
+ def initialize(**options)
64
+ configure(options)
64
65
  end
65
66
 
67
+ # TODO: deprecate this mutator
66
68
  def configure(options)
67
69
  @only_patterns = options[:only] ? Array(options[:only]) : nil
68
70
  @ignore_patterns = _init_ignores(options[:ignore], options[:ignore!])
69
71
  end
70
72
 
71
- # Note: relative_path is temporarily expected to be a relative Pathname to
72
- # make refactoring easier (ideally, it would take a string)
73
-
74
- # TODO: switch type and path places - and verify
75
73
  def silenced?(relative_path, type)
76
- path = relative_path.to_s
74
+ path = relative_path.to_s # in case it is a Pathname
77
75
 
78
76
  _ignore?(path) || (only_patterns && type == :file && !_only?(path))
79
77
  end
data/lib/listen/thread.rb CHANGED
@@ -24,7 +24,7 @@ module Listen
24
24
 
25
25
  def rescue_and_log(method_name, *args, caller_stack: nil)
26
26
  yield(*args)
27
- rescue Exception => exception # rubocop:disable Lint/RescueException
27
+ rescue => exception
28
28
  _log_exception(exception, method_name, caller_stack: caller_stack)
29
29
  end
30
30
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Listen
4
- VERSION = '3.4.1'
4
+ VERSION = '3.7.0'
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.4.1
4
+ version: 3.7.0
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: 2021-01-14 00:00:00.000000000 Z
11
+ date: 2021-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb-fsevent
@@ -103,9 +103,9 @@ metadata:
103
103
  allowed_push_host: https://rubygems.org
104
104
  bug_tracker_uri: https://github.com/guard/listen/issues
105
105
  changelog_uri: https://github.com/guard/listen/releases
106
- documentation_uri: https://www.rubydoc.info/gems/listen/3.4.1
106
+ documentation_uri: https://www.rubydoc.info/gems/listen/3.7.0
107
107
  homepage_uri: https://github.com/guard/listen
108
- source_code_uri: https://github.com/guard/listen/tree/v3.4.1
108
+ source_code_uri: https://github.com/guard/listen/tree/v3.7.0
109
109
  post_install_message:
110
110
  rdoc_options: []
111
111
  require_paths:
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.2.7
117
+ version: 2.4.0
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="