bionic (1) rerun.1.gz

Provided by: rerun_0.11.0-1_all bug

NAME

       rerun - run programs and restarts them on filesystem changes

DESCRIPTION

       Rerun launches your program, then watches the filesystem. If a relevant file changes, then it restarts
       your program.

       Rerun works for both long-running processes (e.g. apps) and short-running ones (e.g. tests). It’s
       basically a no-frills command-line alternative to Guard, Shotgun, Autotest, etc. that doesn’t require
       config files and works on any command, not just Ruby programs.

       Rerun’s advantage is its simple design. Since it uses exec and the standard Unix SIGINT and SIGKILL
       signals, you’re sure the restarted app is really acting just like it was when you ran it from the command
       line the first time.

       By default it watches files ending in: rb,js,coffee,css,scss,sass,erb,html,haml,ru,yml,slim,md,feature.
       Use the --pattern option if you want to change this.

       As of version 0.7.0, we use the Listen gem, which tries to use your OS’s built-in facilities for
       monitoring the filesystem, so CPU use is very light.

       Rerun does not work on Windows. Sorry, but you can’t do much relaunching without "fork".

USAGE

           rerun [options] [--] cmd

       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

       --dir  directory  (or  directories) to watch (default = "."). Separate multiple paths with ',' and/or use
       multiple -d options.

       --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,coffee,css,scss,sass,erb,html,haml,ru,yml,slim,md,feature.  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.

       --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.*

       --signal (or -s) 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)

       --restart (or -r) expect process to restart itself, using signal HUP by default (e.g. -r -s INT will send
       a INT and then resume watching for changes)

       --clear (or -c) clear the screen before each run

       --exit (or -x) expect the program to exit. With this option, rerun checks the return value;  without  it,
       rerun checks that the launched process is still running.

       --background (or -b) disable on-the-fly commands, allowing the process to be backgrounded

       --notify NOTIFIER use growl or osx for notifications (see below)

       --no-notify don’t use growl (or osx) notifications

       --name set the app name (for display)

       Also --version and --help, naturally.

NOTIFICATIONS

       If  you  have  growlnotify  available  on  the  PATH,  it sends notifications to growl in addition to the
       console. If you have terminal-notifier, it sends  notifications  to  the  OS  X  notification  center  in
       addition to the console.

       If  you  have  both, Rerun will pick one, or you can choose between them using --notify growl or --notify
       osx respectively.

       If you have a notifier installed but don’t want rerun to use it, set the --no-notify option.

       Download [growlnotify here](<http://growl.info/downloads.php#generaldownloads>) now that Growl has  moved
       to the App Store.

       Install    [terminal-notifier](<https://github.com/julienXX/terminal-notifier>)    using    gem   install
       terminal-notifier. (You may have to put it in your system gemset and/or use sudo too.) Using Homebrew  to
       install terminal-notifier is not recommended.

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.

TROUBLESHOOTING

       If  you  are  using  zsh as your shell, and you are specifying your --pattern as */.rb, you may face this
       error

           Errno::EACCES: Permission denied - <filename>

       This is because */.rb gets expanded into the command by zsh instead of passing it through to  rerun.  The
       solution is to simply quote ('' or "") the pattern. i.e

           rerun -p **/*.rb rake test

       becomes

           rerun -p "**/*.rb" rake test

                                                   2016-05-09                                           RERUN(1)