listen 2.10.0 → 2.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7d761e41830d7a1ab26c12f681c86434f8f3ca8
4
- data.tar.gz: bb0360cd61be2b710ca0964af23e569204ce52fa
3
+ metadata.gz: 617639ec10e92398c4bb2ac0ee386f9f51301b77
4
+ data.tar.gz: 56e366a55edf6c6f926f7d70a898ed86e02e0a76
5
5
  SHA512:
6
- metadata.gz: 990bf729b6f8fc4208b3677047464665434538f2fc4c64dccdff4dd2d0da586477f61c593e3bcb1416f809072cb7a7d69045b9871a087a6365a352e1c8cb0903
7
- data.tar.gz: 9f8ed8e2f7a63e68b4d59beb2414ff9818d1ae539b1e58e9fdc6214e11400fb3945a6b3a35fd4452c0e88fb702e6854a2580e38ede78f96a2cf8e69d9f18fe76
6
+ metadata.gz: cc5839d65676759b511acbecbaef944fb8f23d4add9f5c210392b50cfab51f4ed8f4296584131f264a6b7d30218ab27c3e0c63ec6bfed0439d382112d1a34a1b
7
+ data.tar.gz: 63c675e1adeae3ba7fa84e35f0729558db2eefcf3ad5a0447773bbfed7328412da623cccbea50ff00ead0f4ff9a8c205793da1b6d2609b6a90f52f27e986e8f5
@@ -28,7 +28,7 @@ module Listen
28
28
  defaults = self.class.const_get('DEFAULTS')
29
29
  @options = Listen::Options.new(options, defaults)
30
30
  rescue
31
- _log_exception 'adapter config failed: %s:%s'
31
+ _log_exception 'adapter config failed: %s:%s called from: %s', caller
32
32
  raise
33
33
  end
34
34
 
@@ -53,11 +53,12 @@ module Listen
53
53
 
54
54
  def start
55
55
  configure
56
+ calling_stack = caller.dup
56
57
  Listen::Internals::ThreadPool.add do
57
58
  begin
58
59
  _run
59
60
  rescue
60
- _log_exception 'run() in thread failed: %s:%s'
61
+ _log_exception "run() in thread failed: %s:\n %s\n\ncalled from:\n %s", calling_stack
61
62
  raise
62
63
  end
63
64
  end
@@ -83,8 +84,8 @@ module Listen
83
84
  self.class.send(:_log, *args, &block)
84
85
  end
85
86
 
86
- def _log_exception(msg)
87
- _log :error, format(msg, $ERROR_INFO, $ERROR_POSITION * "\n")
87
+ def _log_exception(msg, caller_stack)
88
+ _log :error, format(msg, $ERROR_INFO, $ERROR_POSITION * "\n", caller_stack * "\n")
88
89
  end
89
90
 
90
91
  def self._log(*args, &block)
@@ -26,7 +26,7 @@ module Listen
26
26
  end
27
27
 
28
28
  # TODO: this is not tested properly
29
- previous.reject! { |entry, _| current.include? path + entry }
29
+ previous = previous.reject { |entry, _| current.include? path + entry }
30
30
 
31
31
  _async_changes(dir, rel_path, queue, previous, options)
32
32
 
@@ -4,7 +4,9 @@ module Listen
4
4
  # Just a wrapper for tests to avoid interfereing with Celluloid's threads
5
5
  module ThreadPool
6
6
  def self.add(&block)
7
- (@threads ||= Queue.new) << Thread.new { block.call }
7
+ Thread.new { block.call }.tap do |th|
8
+ (@threads ||= Queue.new) << th
9
+ end
8
10
  end
9
11
 
10
12
  def self.stop
@@ -188,12 +188,17 @@ module Listen
188
188
  include Internals::Logging
189
189
 
190
190
  def _init_options(options = {})
191
- { debug: false,
192
- latency: nil,
191
+ {
192
+ # Listener options
193
+ debug: false,
193
194
  wait_for_delay: 0.1,
194
- force_polling: false,
195
195
  relative: false,
196
- polling_fallback_message: nil }.merge(options)
196
+
197
+ # Backend selecting options
198
+ force_polling: false,
199
+ polling_fallback_message: nil,
200
+
201
+ }.merge(options)
197
202
  end
198
203
 
199
204
  def _debug_level
@@ -209,7 +214,7 @@ module Listen
209
214
  end
210
215
 
211
216
  def _init_actors
212
- options = [mq: self, directories: directories]
217
+ adapter_options = { mq: self, directories: directories }
213
218
 
214
219
  @supervisor = Celluloid::SupervisionGroup.run!(registry)
215
220
  supervisor.add(Record, as: :record, args: self)
@@ -218,6 +223,9 @@ module Listen
218
223
  # TODO: broadcaster should be a separate plugin
219
224
  if @tcp_mode == :broadcaster
220
225
  require 'listen/tcp/broadcaster'
226
+
227
+ # TODO: pass a TCP::Config class to make sure host and port are properly
228
+ # passed, even when nil
221
229
  supervisor.add(TCP::Broadcaster, as: :broadcaster, args: [@host, @port])
222
230
 
223
231
  # TODO: should be auto started, because if it crashes
@@ -226,10 +234,16 @@ module Listen
226
234
  registry[:broadcaster].start
227
235
  elsif @tcp_mode == :recipient
228
236
  # TODO: adapter options should be configured in Listen.{on/to}
229
- options.first.merge!(host: @host, port: @port)
237
+ adapter_options.merge!(host: @host, port: @port)
238
+ end
239
+
240
+ # TODO: refactor
241
+ valid_adapter_options = _adapter_class.const_get(:DEFAULTS).keys
242
+ valid_adapter_options.each do |key|
243
+ adapter_options.merge!(key => options[key]) if options.key?(key)
230
244
  end
231
245
 
232
- supervisor.add(_adapter_class, as: :adapter, args: options)
246
+ supervisor.add(_adapter_class, as: :adapter, args: [adapter_options])
233
247
  end
234
248
 
235
249
  def _wait_for_changes
@@ -12,7 +12,7 @@ module Listen
12
12
  else
13
13
  smooshed = { modified: [], added: [], removed: [] }
14
14
  changes.each do |_, change, dir, rel_path, _|
15
- smooshed[change] << (dir + rel_path).to_s
15
+ smooshed[change] << (dir + rel_path).to_s if smooshed.key?(change)
16
16
  end
17
17
  smooshed.tap { |s| s.each { |_, v| v.uniq! } }
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module Listen
2
- VERSION = '2.10.0'
2
+ VERSION = '2.10.1'
3
3
  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: 2.10.0
4
+ version: 2.10.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: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  requirements: []
127
127
  rubyforge_project:
128
- rubygems_version: 2.4.5
128
+ rubygems_version: 2.4.7
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: Listen to file modifications