rerun 0.5.5 → 0.6.0
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.
- data/README.md +8 -4
- data/bin/rerun +8 -0
- data/lib/rerun/runner.rb +28 -7
- data/rerun.gemspec +2 -2
- metadata +2 -2
data/README.md
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
Launches your app, then watches the filesystem. If a relevant file
|
6
6
|
changes, then it restarts your app.
|
7
7
|
|
8
|
-
By default only *.{rb,js,css,erb,ru} files are watched. Use the
|
8
|
+
By default only *.{rb,js,css,scss,sass,erb,html,haml,ru} files are watched. Use the
|
9
9
|
`--pattern` option if you want to change this.
|
10
10
|
|
11
11
|
If you're on Mac OS X, and using the built-in ruby,
|
12
12
|
it uses the built-in facilities for monitoring
|
13
|
-
the filesystem, so CPU use is very light. And if you have
|
14
|
-
available on the PATH
|
13
|
+
the filesystem, so CPU use is very light. And if you have `growlnotify`
|
14
|
+
available on the `PATH`, it sends notifications to growl in addition to
|
15
15
|
the console. Here's how to install
|
16
16
|
[growlnotify](http://growl.info/extras.php#growlnotify):
|
17
17
|
|
@@ -61,15 +61,19 @@ Rackup can also be used to launch a Rack server, so let's try that:
|
|
61
61
|
--pattern glob to match inside directory. This uses the Ruby Dir glob style -- see <http://www.ruby-doc.org/core/classes/Dir.html#M002322> for details.
|
62
62
|
By default it watches these files: `rb,js,css,scss,sass,erb,html,haml,ru`.
|
63
63
|
|
64
|
+
--clear (or -c) clear the screen before each run
|
65
|
+
|
66
|
+
--exit (or -x) expect the program to exit. With this option, rerun checks the return value; without it, rerun checks that the process is running.
|
67
|
+
|
64
68
|
Also --version and --help.
|
65
69
|
|
66
70
|
# To Do:
|
67
71
|
|
72
|
+
* Cooldown (so if a dozen files appear in a burst, say from 'git pull', it only restarts once)
|
68
73
|
* If the last element of the command is a `.ru` file and there's no other command then use `rackup`
|
69
74
|
* Allow arbitrary sets of directories and file types, possibly with "include" and "exclude" sets
|
70
75
|
* ".rerun" file to specify options per project or in $HOME.
|
71
76
|
* Test on Linux.
|
72
|
-
* Test on Mac without Growlnotify.
|
73
77
|
* Merge with Kicker (using it as a library and writing a Rerun recipe) or Watchr
|
74
78
|
* On OS X, use a C library using growl's developer API <http://growl.info/developer/>
|
75
79
|
|
data/bin/rerun
CHANGED
@@ -30,6 +30,14 @@ opts = OptionParser.new("", 24, ' ') { |opts|
|
|
30
30
|
options[:pattern] = pattern
|
31
31
|
end
|
32
32
|
|
33
|
+
opts.on("-c", "--clear", "clear screen before each run") do
|
34
|
+
options[:clear] = true
|
35
|
+
end
|
36
|
+
|
37
|
+
opts.on("-x", "--exit", "expect the program to exit. With this option, rerun checks the return value; without it, rerun checks that the process is running.") do |dir|
|
38
|
+
options[:exit] = true
|
39
|
+
end
|
40
|
+
|
33
41
|
opts.on_tail("-h", "--help", "--usage", "show this message") do
|
34
42
|
puts opts
|
35
43
|
exit
|
data/lib/rerun/runner.rb
CHANGED
@@ -22,6 +22,14 @@ module Rerun
|
|
22
22
|
def pattern
|
23
23
|
@options[:pattern] || DEFAULT_PATTERN
|
24
24
|
end
|
25
|
+
|
26
|
+
def clear?
|
27
|
+
@options[:clear]
|
28
|
+
end
|
29
|
+
|
30
|
+
def exit?
|
31
|
+
@options[:exit]
|
32
|
+
end
|
25
33
|
|
26
34
|
def start
|
27
35
|
if windows?
|
@@ -33,16 +41,20 @@ module Rerun
|
|
33
41
|
"To infinity... and beyond!",
|
34
42
|
"Charge!",
|
35
43
|
]
|
36
|
-
notify "
|
44
|
+
notify "launched", taglines[rand(taglines.size)]
|
37
45
|
@already_running = true
|
38
46
|
else
|
39
47
|
taglines = [
|
40
48
|
"Here we go again!",
|
49
|
+
"Keep on trucking.",
|
41
50
|
"Once more unto the breach, dear friends, once more!",
|
51
|
+
"The road goes ever on and on, down from the door where it began.",
|
42
52
|
]
|
43
|
-
notify "
|
53
|
+
notify "restarted", taglines[rand(taglines.size)]
|
44
54
|
end
|
45
55
|
|
56
|
+
print "\033[H\033[2J" if clear? # see http://ascii-table.com/ansi-escape-sequences-vt-100.php
|
57
|
+
|
46
58
|
@pid = Kernel.fork do
|
47
59
|
begin
|
48
60
|
# Signal.trap("INT") { exit }
|
@@ -52,13 +64,13 @@ module Rerun
|
|
52
64
|
exit
|
53
65
|
end
|
54
66
|
end
|
55
|
-
Process.detach(@pid) # so if the child exits, it dies
|
67
|
+
status_thread = Process.detach(@pid) # so if the child exits, it dies
|
56
68
|
|
57
69
|
Signal.trap("INT") do # INT = control-C
|
58
70
|
stop # first stop the child
|
59
71
|
exit
|
60
72
|
end
|
61
|
-
|
73
|
+
|
62
74
|
begin
|
63
75
|
sleep 2
|
64
76
|
rescue Interrupt => e
|
@@ -67,9 +79,18 @@ module Rerun
|
|
67
79
|
exit
|
68
80
|
end
|
69
81
|
|
70
|
-
|
71
|
-
|
72
|
-
|
82
|
+
if exit?
|
83
|
+
status = status_thread.value
|
84
|
+
if status.success?
|
85
|
+
notify "succeeded", ""
|
86
|
+
else
|
87
|
+
notify "failed", "Exit status #{status.exitstatus}"
|
88
|
+
end
|
89
|
+
else
|
90
|
+
if !running?
|
91
|
+
notify "Launch Failed", "See console for error output"
|
92
|
+
@already_running = false
|
93
|
+
end
|
73
94
|
end
|
74
95
|
|
75
96
|
unless @watcher
|
data/rerun.gemspec
CHANGED
@@ -3,8 +3,8 @@ $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
|
-
s.date = '2011-05-
|
6
|
+
s.version = '0.6.0'
|
7
|
+
s.date = '2011-05-15'
|
8
8
|
|
9
9
|
s.description = "Restarts your app when a file changes"
|
10
10
|
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.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-05-
|
12
|
+
date: 2011-05-15 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Restarts your app when a file changes
|
15
15
|
email: alex@stinky.com
|