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)