listen 2.7.4 → 2.7.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +232 -0
- data/.travis.yml +6 -3
- data/Gemfile +9 -1
- data/Guardfile +6 -1
- data/README.md +17 -4
- data/lib/listen.rb +9 -4
- data/lib/listen/adapter.rb +5 -7
- data/lib/listen/adapter/base.rb +8 -5
- data/lib/listen/adapter/bsd.rb +58 -21
- data/lib/listen/adapter/darwin.rb +2 -4
- data/lib/listen/adapter/linux.rb +20 -10
- data/lib/listen/adapter/polling.rb +0 -2
- data/lib/listen/adapter/tcp.rb +6 -5
- data/lib/listen/adapter/windows.rb +8 -6
- data/lib/listen/change.rb +1 -2
- data/lib/listen/cli.rb +25 -22
- data/lib/listen/directory.rb +8 -6
- data/lib/listen/listener.rb +25 -19
- data/lib/listen/record.rb +4 -2
- data/lib/listen/silencer.rb +55 -25
- data/lib/listen/tcp.rb +9 -0
- data/lib/listen/tcp/broadcaster.rb +0 -2
- data/lib/listen/tcp/listener.rb +13 -8
- data/lib/listen/tcp/message.rb +0 -2
- data/lib/listen/version.rb +1 -1
- data/listen.gemspec +4 -3
- data/spec/acceptance/listen_spec.rb +190 -109
- data/spec/acceptance/tcp_spec.rb +28 -26
- data/spec/lib/listen/adapter/base_spec.rb +14 -12
- data/spec/lib/listen/adapter/bsd_spec.rb +5 -2
- data/spec/lib/listen/adapter/darwin_spec.rb +5 -2
- data/spec/lib/listen/adapter/linux_spec.rb +40 -25
- data/spec/lib/listen/adapter/polling_spec.rb +29 -14
- data/spec/lib/listen/adapter/tcp_spec.rb +24 -6
- data/spec/lib/listen/adapter/windows_spec.rb +5 -2
- data/spec/lib/listen/adapter_spec.rb +20 -17
- data/spec/lib/listen/change_spec.rb +36 -26
- data/spec/lib/listen/directory_spec.rb +128 -71
- data/spec/lib/listen/file_spec.rb +67 -34
- data/spec/lib/listen/listener_spec.rb +135 -105
- data/spec/lib/listen/record_spec.rb +32 -29
- data/spec/lib/listen/silencer_spec.rb +78 -56
- data/spec/lib/listen/tcp/broadcaster_spec.rb +3 -2
- data/spec/lib/listen/tcp/listener_spec.rb +17 -11
- data/spec/lib/listen/tcp/message_spec.rb +1 -1
- data/spec/lib/listen_spec.rb +18 -6
- data/spec/spec_helper.rb +5 -1
- data/spec/support/acceptance_helper.rb +3 -3
- data/spec/support/fixtures_helper.rb +10 -9
- metadata +17 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2b1fec6652b9c788556648b883430623b4953d2
|
4
|
+
data.tar.gz: 84e2262d6b7952b3afdb08defa5035604718f2f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b7d31da3edbb75296f7bc8f174c192c9317f87295c13eca6081fbac78793b8b28a9d88851e00f9b74dce5cff508d6bf31ab5e552e1fb1f941160589809a8aba
|
7
|
+
data.tar.gz: 6d4df130ce978ecbbb46069030d1a7324aac5624719c2129d570e6fb7b5553035e4c44dd3c5a9618ec07d2bae9bc6a0099b44dbe448c4b90355ac08620d9ddcd
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,232 @@
|
|
1
|
+
AccessorMethodName:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
Alias:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
ArrayJoin:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
AsciiComments:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
AsciiIdentifiers:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Attr:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
BlockNesting:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
CaseEquality:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
CharacterLiteral:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
ClassLength:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
ClassVars:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
CollectionMethods:
|
35
|
+
PreferredMethods:
|
36
|
+
find: detect
|
37
|
+
reduce: inject
|
38
|
+
collect: map
|
39
|
+
find_all: select
|
40
|
+
|
41
|
+
ColonMethodCall:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
CommentAnnotation:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
CyclomaticComplexity:
|
48
|
+
Enabled: false
|
49
|
+
|
50
|
+
Delegate:
|
51
|
+
Enabled: false
|
52
|
+
|
53
|
+
DeprecatedHashMethods:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
Documentation:
|
57
|
+
Enabled: false
|
58
|
+
|
59
|
+
DotPosition:
|
60
|
+
EnforcedStyle: trailing
|
61
|
+
|
62
|
+
DoubleNegation:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
EmptyLiteral:
|
66
|
+
Enabled: false
|
67
|
+
|
68
|
+
Encoding:
|
69
|
+
Enabled: false
|
70
|
+
|
71
|
+
EvenOdd:
|
72
|
+
Enabled: false
|
73
|
+
|
74
|
+
FileName:
|
75
|
+
Enabled: false
|
76
|
+
|
77
|
+
FlipFlop:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
FormatString:
|
81
|
+
Enabled: false
|
82
|
+
|
83
|
+
GlobalVars:
|
84
|
+
Enabled: false
|
85
|
+
|
86
|
+
IfUnlessModifier:
|
87
|
+
Enabled: false
|
88
|
+
|
89
|
+
IfWithSemicolon:
|
90
|
+
Enabled: false
|
91
|
+
|
92
|
+
Lambda:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
LambdaCall:
|
96
|
+
Enabled: false
|
97
|
+
|
98
|
+
LineEndConcatenation:
|
99
|
+
Enabled: false
|
100
|
+
|
101
|
+
LineLength:
|
102
|
+
Max: 80
|
103
|
+
|
104
|
+
MethodLength:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
ModuleFunction:
|
108
|
+
Enabled: false
|
109
|
+
|
110
|
+
NegatedIf:
|
111
|
+
Enabled: false
|
112
|
+
|
113
|
+
NegatedWhile:
|
114
|
+
Enabled: false
|
115
|
+
|
116
|
+
NilComparison:
|
117
|
+
Enabled: false
|
118
|
+
|
119
|
+
Not:
|
120
|
+
Enabled: false
|
121
|
+
|
122
|
+
NumericLiterals:
|
123
|
+
Enabled: false
|
124
|
+
|
125
|
+
OneLineConditional:
|
126
|
+
Enabled: false
|
127
|
+
|
128
|
+
OpMethod:
|
129
|
+
Enabled: false
|
130
|
+
|
131
|
+
ParameterLists:
|
132
|
+
Enabled: false
|
133
|
+
|
134
|
+
PercentLiteralDelimiters:
|
135
|
+
PreferredDelimiters:
|
136
|
+
'%': '{}'
|
137
|
+
|
138
|
+
PerlBackrefs:
|
139
|
+
Enabled: false
|
140
|
+
|
141
|
+
PredicateName:
|
142
|
+
NamePrefixBlacklist:
|
143
|
+
- is_
|
144
|
+
|
145
|
+
Proc:
|
146
|
+
Enabled: false
|
147
|
+
|
148
|
+
RaiseArgs:
|
149
|
+
Enabled: false
|
150
|
+
|
151
|
+
RegexpLiteral:
|
152
|
+
Enabled: false
|
153
|
+
|
154
|
+
SelfAssignment:
|
155
|
+
Enabled: false
|
156
|
+
|
157
|
+
SingleLineBlockParams:
|
158
|
+
Enabled: false
|
159
|
+
|
160
|
+
SingleLineMethods:
|
161
|
+
Enabled: false
|
162
|
+
|
163
|
+
SpecialGlobalVars:
|
164
|
+
Enabled: false
|
165
|
+
|
166
|
+
VariableInterpolation:
|
167
|
+
Enabled: false
|
168
|
+
|
169
|
+
TrailingComma:
|
170
|
+
Enabled: false
|
171
|
+
|
172
|
+
TrivialAccessors:
|
173
|
+
Enabled: false
|
174
|
+
|
175
|
+
VariableInterpolation:
|
176
|
+
Enabled: false
|
177
|
+
|
178
|
+
WhenThen:
|
179
|
+
Enabled: false
|
180
|
+
|
181
|
+
WhileUntilModifier:
|
182
|
+
Enabled: false
|
183
|
+
|
184
|
+
WordArray:
|
185
|
+
Enabled: false
|
186
|
+
|
187
|
+
# Lint
|
188
|
+
|
189
|
+
AmbiguousOperator:
|
190
|
+
Enabled: false
|
191
|
+
|
192
|
+
AmbiguousRegexpLiteral:
|
193
|
+
Enabled: false
|
194
|
+
|
195
|
+
AssignmentInCondition:
|
196
|
+
Enabled: false
|
197
|
+
|
198
|
+
ConditionPosition:
|
199
|
+
Enabled: false
|
200
|
+
|
201
|
+
DeprecatedClassMethods:
|
202
|
+
Enabled: false
|
203
|
+
|
204
|
+
ElseLayout:
|
205
|
+
Enabled: false
|
206
|
+
|
207
|
+
HandleExceptions:
|
208
|
+
Enabled: false
|
209
|
+
|
210
|
+
InvalidCharacterLiteral:
|
211
|
+
Enabled: false
|
212
|
+
|
213
|
+
LiteralInCondition:
|
214
|
+
Enabled: false
|
215
|
+
|
216
|
+
LiteralInInterpolation:
|
217
|
+
Enabled: false
|
218
|
+
|
219
|
+
Loop:
|
220
|
+
Enabled: false
|
221
|
+
|
222
|
+
ParenthesesAsGroupedExpression:
|
223
|
+
Enabled: false
|
224
|
+
|
225
|
+
RequireParentheses:
|
226
|
+
Enabled: false
|
227
|
+
|
228
|
+
UnderscorePrefixedVariableName:
|
229
|
+
Enabled: false
|
230
|
+
|
231
|
+
Void:
|
232
|
+
Enabled: false
|
data/.travis.yml
CHANGED
@@ -3,14 +3,17 @@ bundler_args: --without tool
|
|
3
3
|
rvm:
|
4
4
|
- 1.9.3
|
5
5
|
- 2.0.0
|
6
|
-
- 2.1.
|
6
|
+
- 2.1.2
|
7
7
|
- jruby
|
8
|
-
- rbx
|
8
|
+
- rbx-2
|
9
9
|
matrix:
|
10
10
|
allow_failures:
|
11
11
|
- rvm: jruby
|
12
|
-
- rvm: rbx
|
12
|
+
- rvm: rbx-2
|
13
13
|
notifications:
|
14
14
|
recipients:
|
15
15
|
- thibaud@thibaud.gg
|
16
16
|
- remy@rymai.me
|
17
|
+
os:
|
18
|
+
- linux
|
19
|
+
- osx
|
data/Gemfile
CHANGED
@@ -4,11 +4,19 @@ gemspec
|
|
4
4
|
|
5
5
|
require 'rbconfig'
|
6
6
|
gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw|cygwin/i
|
7
|
-
|
7
|
+
|
8
|
+
if RbConfig::CONFIG['target_os'] =~ /bsd|dragonfly/i
|
9
|
+
gem 'rb-kqueue', '>= 0.2'
|
10
|
+
# Versions not included have known bugs
|
11
|
+
# Even master branches may not work...
|
12
|
+
gem 'ffi', github: 'carpetsmoker/ffi', ref: 'ac63e07f7'
|
13
|
+
gem 'celluloid', github: 'celluloid/celluloid', ref: '7fdef04'
|
14
|
+
end
|
8
15
|
|
9
16
|
group :tool do
|
10
17
|
gem 'yard', require: false
|
11
18
|
gem 'guard-rspec', require: false
|
19
|
+
gem 'guard-rubocop'
|
12
20
|
end
|
13
21
|
|
14
22
|
group :test do
|
data/Guardfile
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
guard :rspec do
|
1
|
+
guard :rspec, cmd: 'bundle exec rspec', failed_mode: :keep do
|
2
2
|
watch(%r{^spec/.+_spec\.rb$})
|
3
3
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
4
4
|
watch(%r{^spec/support/*}) { 'spec' }
|
5
5
|
watch('spec/spec_helper.rb') { 'spec' }
|
6
6
|
end
|
7
|
+
|
8
|
+
guard :rubocop, all_on_start: false, cli: '--rails' do
|
9
|
+
watch(%r{.+\.rb$}) { |m| m[0] }
|
10
|
+
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
11
|
+
end
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ The Listen gem listens to file modifications and notifies you about the changes.
|
|
7
7
|
## Features
|
8
8
|
|
9
9
|
* Supports watching multiple directories from a single listener.
|
10
|
-
* OS-specific adapters on MRI for Mac OS X 10.6+, Linux,
|
10
|
+
* OS-specific adapters on MRI for Mac OS X 10.6+, Linux, ~~\*BSD~~ and Windows, [more info](#listen-adapters) below.
|
11
11
|
* Detects file modification, addition and removal.
|
12
12
|
* Allows supplying regexp-patterns to ignore paths for better results.
|
13
13
|
* File content checksum comparison for modifications made under the same second (OS X only).
|
@@ -16,7 +16,9 @@ The Listen gem listens to file modifications and notifies you about the changes.
|
|
16
16
|
|
17
17
|
Please note that:
|
18
18
|
- Specs suite on JRuby and Rubinius aren't reliable on Travis CI, but should work.
|
19
|
-
- Windows and
|
19
|
+
- Windows and \*BSD adapter aren't continuously and automaticaly tested.
|
20
|
+
- \*BSD is broken and not supported any more, see: [#220](https://github.com/guard/listen/issues/220)
|
21
|
+
|
20
22
|
|
21
23
|
## Pending features
|
22
24
|
|
@@ -154,7 +156,7 @@ Also, setting the environment variable `LISTEN_GEM_DEBUGGING=1` does the same as
|
|
154
156
|
## Listen adapters
|
155
157
|
|
156
158
|
The Listen gem has a set of adapters to notify it when there are changes.
|
157
|
-
There are 4 OS-specific adapters to support Darwin, Linux,
|
159
|
+
There are 4 OS-specific adapters to support Darwin, Linux, ~~*BSD~~ and Windows.
|
158
160
|
These adapters are fast as they use some system-calls to implement the notifying function.
|
159
161
|
|
160
162
|
There is also a polling adapter which is a cross-platform adapter and it will
|
@@ -178,12 +180,23 @@ gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw|cygwin/i
|
|
178
180
|
|
179
181
|
### On *BSD
|
180
182
|
|
183
|
+
**NOTE: *BSD currently is BROKEN with no plans to fix it or support it (see: [#220](https://github.com/guard/listen/issues/220))**
|
184
|
+
|
181
185
|
If your are on *BSD you can try to use the [`rb-kqueue`](https://github.com/mat813/rb-kqueue) instead of polling.
|
182
186
|
Please add the following to your Gemfile:
|
183
187
|
|
184
188
|
```ruby
|
185
189
|
require 'rbconfig'
|
186
|
-
gem 'rb-kqueue', '>= 0.2'
|
190
|
+
gem 'rb-kqueue', '>= 0.2'
|
191
|
+
if RbConfig::CONFIG['target_os'] =~ /bsd|dragonfly/i
|
192
|
+
gem 'rb-kqueue', '>= 0.2'
|
193
|
+
|
194
|
+
# Base versions have known conflicts/bugs
|
195
|
+
# Even master branches may not work...
|
196
|
+
gem 'ffi', github: 'carpetsmoker/ffi', ref: 'ac63e07f7'
|
197
|
+
gem 'celluloid', github: 'celluloid/celluloid', ref: '7fdef04'
|
198
|
+
end
|
199
|
+
|
187
200
|
```
|
188
201
|
|
189
202
|
### Issues
|
data/lib/listen.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'celluloid'
|
2
2
|
require 'listen/listener'
|
3
|
-
require 'listen/tcp/listener'
|
4
3
|
|
5
4
|
module Listen
|
6
5
|
class << self
|
7
6
|
attr_accessor :stopping
|
8
7
|
|
9
|
-
# Listens to file system modifications on a either single directory or
|
8
|
+
# Listens to file system modifications on a either single directory or
|
9
|
+
# multiple directories.
|
10
10
|
#
|
11
|
-
# When :forward_to is specified, this listener will broadcast modifications
|
11
|
+
# When :forward_to is specified, this listener will broadcast modifications
|
12
|
+
# over TCP.
|
12
13
|
#
|
13
14
|
# @param (see Listen::Listener#new)
|
14
15
|
#
|
@@ -24,6 +25,7 @@ module Listen
|
|
24
25
|
@stopping = false
|
25
26
|
options = args.last.is_a?(Hash) ? args.last : {}
|
26
27
|
if target = options.delete(:forward_to)
|
28
|
+
require 'listen/tcp'
|
27
29
|
TCP::Listener.new(target, :broadcaster, *args, &block)
|
28
30
|
else
|
29
31
|
Listener.new(*args, &block)
|
@@ -31,7 +33,9 @@ module Listen
|
|
31
33
|
end
|
32
34
|
|
33
35
|
# Stop all listeners & Celluloid
|
34
|
-
#
|
36
|
+
#
|
37
|
+
# Use it for testing purpose or when you are sure that Celluloid could be
|
38
|
+
# ended.
|
35
39
|
#
|
36
40
|
def stop
|
37
41
|
Celluloid.shutdown
|
@@ -49,6 +53,7 @@ module Listen
|
|
49
53
|
# @return [Listen::Listener] the listener
|
50
54
|
#
|
51
55
|
def on(target, *args, &block)
|
56
|
+
require 'listen/tcp'
|
52
57
|
TCP::Listener.new(target, :recipient, *args, &block)
|
53
58
|
end
|
54
59
|
|
data/lib/listen/adapter.rb
CHANGED
@@ -3,13 +3,13 @@ require 'listen/adapter/bsd'
|
|
3
3
|
require 'listen/adapter/darwin'
|
4
4
|
require 'listen/adapter/linux'
|
5
5
|
require 'listen/adapter/polling'
|
6
|
-
require 'listen/adapter/tcp'
|
7
6
|
require 'listen/adapter/windows'
|
8
7
|
|
9
8
|
module Listen
|
10
9
|
module Adapter
|
11
|
-
OPTIMIZED_ADAPTERS = %w
|
12
|
-
POLLING_FALLBACK_MESSAGE =
|
10
|
+
OPTIMIZED_ADAPTERS = %w(Darwin Linux BSD Windows)
|
11
|
+
POLLING_FALLBACK_MESSAGE = 'Listen will be polling for changes.'\
|
12
|
+
'Learn more at https://github.com/guard/listen#polling-fallback.'
|
13
13
|
|
14
14
|
def self.select(options = {})
|
15
15
|
return TCP if options[:force_tcp]
|
@@ -28,10 +28,8 @@ module Listen
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def self._warn_polling_fallback(options)
|
31
|
-
|
32
|
-
|
33
|
-
warning = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
|
34
|
-
Kernel.warn "[Listen warning]:\n #{warning}"
|
31
|
+
msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
|
32
|
+
Kernel.warn "[Listen warning]:\n #{msg}" if msg
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
data/lib/listen/adapter/base.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Listen
|
2
2
|
module Adapter
|
3
|
-
|
4
3
|
class Base
|
5
4
|
include Celluloid
|
6
5
|
|
@@ -14,11 +13,15 @@ module Listen
|
|
14
13
|
end
|
15
14
|
|
16
15
|
def self.usable?
|
17
|
-
|
16
|
+
fail NotImplementedError
|
18
17
|
end
|
19
18
|
|
20
19
|
def start
|
21
|
-
|
20
|
+
fail NotImplementedError
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.local_fs?
|
24
|
+
true
|
22
25
|
end
|
23
26
|
|
24
27
|
private
|
@@ -33,9 +36,9 @@ module Listen
|
|
33
36
|
|
34
37
|
def _notify_change(path, options)
|
35
38
|
sleep 0.01 until listener.registry[:change_pool]
|
36
|
-
listener.registry[:change_pool]
|
39
|
+
pool = listener.registry[:change_pool]
|
40
|
+
pool.async.change(path, options) if listener.listen?
|
37
41
|
end
|
38
42
|
end
|
39
|
-
|
40
43
|
end
|
41
44
|
end
|