File tree Expand file tree Collapse file tree 3 files changed +48
-6
lines changed Expand file tree Collapse file tree 3 files changed +48
-6
lines changed Original file line number Diff line number Diff line change @@ -66,7 +66,17 @@ def initialized?
66
66
67
67
def start_watcher
68
68
@watcher = Spring . watcher
69
- @watcher . on_stale { state! :watcher_stale }
69
+
70
+ @watcher . on_stale do
71
+ state! :watcher_stale
72
+ end
73
+
74
+ if @watcher . respond_to? :on_debug
75
+ @watcher . on_debug do |message |
76
+ spring_env . log "[watcher:#{ app_env } ] #{ message } "
77
+ end
78
+ end
79
+
70
80
@watcher . start
71
81
end
72
82
Original file line number Diff line number Diff line change @@ -23,9 +23,21 @@ def initialize(root, latency)
23
23
@directories = Set . new
24
24
@stale = false
25
25
@listeners = [ ]
26
+
27
+ @on_debug = nil
28
+ end
29
+
30
+ def on_debug ( &block )
31
+ @on_debug = block
32
+ end
33
+
34
+ def debug
35
+ @on_debug . call ( yield ) if @on_debug
26
36
end
27
37
28
38
def add ( *items )
39
+ debug { "watcher: add: #{ items . inspect } " }
40
+
29
41
items = items . flatten . map do |item |
30
42
item = Pathname . new ( item )
31
43
@@ -56,16 +68,19 @@ def stale?
56
68
end
57
69
58
70
def on_stale ( &block )
71
+ debug { "added listener: #{ block . inspect } " }
59
72
@listeners << block
60
73
end
61
74
62
75
def mark_stale
63
76
return if stale?
64
77
@stale = true
78
+ debug { "marked stale, calling listeners: listeners=#{ @listeners . inspect } " }
65
79
@listeners . each ( &:call )
66
80
end
67
81
68
82
def restart
83
+ debug { "restarting" }
69
84
stop
70
85
start
71
86
end
Original file line number Diff line number Diff line change @@ -12,7 +12,13 @@ def initialize(root, latency)
12
12
end
13
13
14
14
def check_stale
15
- synchronize { mark_stale if mtime < compute_mtime }
15
+ synchronize do
16
+ computed = compute_mtime
17
+ if mtime < computed
18
+ debug { "check_stale: mtime=#{ mtime . inspect } < computed=#{ computed . inspect } " }
19
+ mark_stale
20
+ end
21
+ end
16
22
end
17
23
18
24
def add ( *)
@@ -21,27 +27,38 @@ def add(*)
21
27
end
22
28
23
29
def start
30
+ debug { "start: poller=#{ @poller . inspect } " }
24
31
unless @poller
25
32
@poller = Thread . new {
26
33
Thread . current . abort_on_exception = true
27
34
28
- loop do
29
- Kernel . sleep latency
30
- check_stale
35
+ begin
36
+ loop do
37
+ Kernel . sleep latency
38
+ check_stale
39
+ end
40
+ rescue Exception => e
41
+ debug do
42
+ "poller: aborted: #{ e . class } : #{ e } \n #{ e . backtrace . join ( "\n " ) } "
43
+ end
44
+ raise
31
45
end
32
46
}
33
47
end
34
48
end
35
49
36
50
def stop
51
+ debug { "stopping poller: #{ @poller . inspect } " }
37
52
if @poller
38
53
@poller . kill
39
54
@poller = nil
40
55
end
41
56
end
42
57
43
58
def subjects_changed
44
- @mtime = compute_mtime
59
+ computed = compute_mtime
60
+ debug { "subjects_changed: mtime #{ @mtime } -> #{ computed } " }
61
+ @mtime = computed
45
62
end
46
63
47
64
private
You can’t perform that action at this time.
0 commit comments