rerun 0.7.0.pre4 → 0.7.0.pre5

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.
Files changed (3) hide show
  1. data/lib/rerun/runner.rb +20 -7
  2. data/rerun.gemspec +1 -1
  3. metadata +2 -2
data/lib/rerun/runner.rb CHANGED
@@ -18,9 +18,7 @@ module Rerun
18
18
  end
19
19
 
20
20
  def start_keypress_thread
21
- from = caller.first
22
21
  @keypress_thread = Thread.new do
23
- # puts "starting keypress thread #{Thread.current.object_id} from #{from}"
24
22
  while true
25
23
  if c = key_pressed
26
24
  case c.downcase
@@ -30,10 +28,17 @@ module Rerun
30
28
  when 'r'
31
29
  say "Restarting"
32
30
  restart
33
- break # the break will stop this thread
34
31
  when 'x', 'q'
35
32
  die
36
33
  break # the break will stop this thread, in case the 'die' doesn't
34
+ when 't'
35
+ puts
36
+ puts "#{Thread.list.size} threads:"
37
+ Thread.list.each do |t|
38
+ puts "#{t.object_id}\tstatus: #{t.status}"
39
+ puts "\t" + t.backtrace[0..5].join("\n\t")
40
+ puts
41
+ end
37
42
  else
38
43
  puts "\n#{c.inspect} pressed inside rerun"
39
44
  puts [["c", "clear screen"],
@@ -45,12 +50,11 @@ module Rerun
45
50
  end
46
51
  sleep 1 # todo: use select instead of polling somehow?
47
52
  end
48
- # puts "keypress thread #{Thread.current.object_id} ending"
49
53
  end
50
54
  @keypress_thread.run
51
55
  end
52
56
 
53
- def kill_keypress_thread
57
+ def stop_keypress_thread
54
58
  @keypress_thread.kill if @keypress_thread
55
59
  @keypress_thread = nil
56
60
  end
@@ -101,7 +105,7 @@ module Rerun
101
105
  end
102
106
 
103
107
  clear_screen if clear?
104
- start_keypress_thread
108
+ start_keypress_thread unless @keypress_thread
105
109
 
106
110
  @pid = Kernel.fork do
107
111
  begin
@@ -144,7 +148,15 @@ module Rerun
144
148
 
145
149
  unless @watcher
146
150
 
147
- watcher = Watcher.new(:directory => dir, :pattern => pattern) do
151
+ watcher = Watcher.new(:directory => dir, :pattern => pattern) do |changes|
152
+
153
+ message = [:modified, :added, :removed].map do |change|
154
+ count = changes[change].size
155
+ if count and count > 0
156
+ "#{count} #{change}"
157
+ end
158
+ end.compact.join(", ")
159
+ say "Change detected: #{message}"
148
160
  restart unless @restarting
149
161
  end
150
162
  watcher.start
@@ -154,6 +166,7 @@ module Rerun
154
166
  end
155
167
 
156
168
  def die
169
+ #stop_keypress_thread # don't do this since we're probably *in* the keypress thread
157
170
  stop # stop the child process if it exists
158
171
  exit 0 # todo: status code param
159
172
  end
data/rerun.gemspec CHANGED
@@ -3,7 +3,7 @@ $spec = Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'rerun'
6
- s.version = '0.7.0.pre4'
6
+ s.version = '0.7.0.pre5'
7
7
 
8
8
  s.description = "Restarts your app when a file changes"
9
9
  s.summary = "Launches an app, and restarts it whenever the filesystem changes."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rerun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.pre4
4
+ version: 0.7.0.pre5
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -61,7 +61,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
61
  version: '0'
62
62
  segments:
63
63
  - 0
64
- hash: -2239978270420892770
64
+ hash: -1590261424703509507
65
65
  required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements: