Provided by: rerun_0.10.0-1_all 

NAME
rerun - launches commands and restarts them on filesystem changes
USAGE
rerun [options] [--] cmd
EXAMPLES
For example, if you´re running a Sinatra app whose main file is app.rb:
rerun ruby app.rb
If the first part of the command is a .rb filename, then ruby is optional, so the above can also be
accomplished like this:
rerun app.rb
Rails doesn´t automatically notice all config file changes, so you can force it to restart when you
change a config file like this:
rerun --dir config rails s
Or if you´re using Thin to run a Rack app that´s configured in config.ru but you want it on port 4000 and
in debug mode, and only want to watch the app and web subdirectories:
rerun --dir app,web -- thin start --debug --port=4000 -R config.ru
The -- is to separate rerun options from cmd options. You can also use a quoted string for the command,
e.g.
rerun --dir app "thin start --debug --port=4000 -R config.ru"
Rackup can also be used to launch a Rack server, so let´s try that:
rerun -- rackup --port 4000 config.ru
Want to mimic autotest https://github.com/grosser/autotest? Try
rerun -x rake
or
rerun -cx rspec
And if you´re using Spork https://github.com/sporkrb/spork with Rails, you need to restart your spork
server https://github.com/sporkrb/spork/issues/201 whenever certain Rails environment files change, so
why not put this in your Rakefile...
desc "run spork (via rerun)"
task :spork do
sh "rerun --pattern ´{Gemfile,Gemfile.lock,spec/spec_helper.rb,.rspec,spec/factories/**,config/environment.rb,config/environments/test.rb,config/initializers/*.rb,lib/**/*.rb}´ -- spork"
end
and start using rake spork to launch your spork server?
(If you´re using Guard instead of Rerun, check out guard-spork https://github.com/guard/guard-spork for a
similar solution.)
How about regenerating your HTML files after every change to your Erector http://erector.rubyforge.org
widgets?
rerun -x erector --to-html my_site.rb
Use Heroku Cedar? rerun is now compatible with foreman. Run all your Procfile processes locally and
restart them all when necessary.
rerun foreman start
OPTIONS
-d, --dir
directory (or directories) to watch (default = "."). Separate multiple paths with ´,´ and/or use
multiple -d options.
-p, --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.
By default it watches files ending in: rb,js,css,coffee,scss,sass,erb,html,haml,ru,slim,md. On top
of this, it also ignores dotfiles, .tmp files, and some other files and directories (like .git and
log). Run rerun --help to see the actual list.
-i, --ignore pattern
file glob to ignore (can be set many times). To ignore a directory, you must append ´/*´ e.g.
--ignore ´coverage/*´.
On top of --pattern and --ignore, we ignore any changes to files and dirs starting with a dot.
-s, --signal
use specified signal (instead of the default SIGTERM) to terminate the previous process. This may
be useful for forcing the respective process to terminate as quickly as possible. (--signal KILL
is the equivalent of kill -9)
-h, --hup
when restarting, send a SIGHUP signal instead of trying to terminate the process and run a new
one. This assumes the process is capable of restarting by itself (as e.g. unicorn is).
-c, --clear
clear the screen before each run
-x, --exit
expect the program to exit. With this option, rerun checks the return value; without it, rerun
checks that the launched process is still running.
-b, --background
disable on-the-fly commands, allowing the process to be backgrounded
-n, --name
set the app name (for display)
Also --version and --help, naturally.
ON-THE-FLY COMMANDS
While the app is (re)running, you can make things happen by pressing keys:
• r -- restart (as if a file had changed)
• c -- clear the screen
• x or q -- exit (just like control-C)
• p -- pause/unpause filesystem watching
If you´re backgrounding or using Pry or a debugger, you might not want these keys to be trapped, so use
the --background option.
SIGNALS
The current algorithm for killing the process is:
• send SIGTERM http://en.wikipedia.org/wiki/SIGTERM (or the value of the --signal option)
• if that doesn´t work after 4 seconds, send SIGINT (aka control-C)
• if that doesn´t work after 2 more seconds, send SIGKILL (aka kill -9)
This seems like the most gentle and unixy way of doing things, but it does mean that if your program
ignores SIGTERM, it takes an extra 4 to 6 seconds to restart.
August 2015 RERUN(1)