- Listening is now handled by the Listen gem.
- New
--latency
/-l
option to overwrite Listen's default latency. - New
--force-polling
/-p
option to force usage of the Listen polling listener. --watch-all-modifications
/-A
option is removed and is now always on.--no-vendor
/-I
option is removed because the monitoring gems are now part of the Listen gem. You can specify a custom version of any monitoring gem directly in your Gemfile if you want to overwrite Listen's default monitoring gems.- Guards implementations must now implement
run_on_additions
,run_on_modifications
,run_on_removals
and / orrun_on_changes
. Therun_on_change
andrun_on_deletion
methods are deprecated and should be removed as soon as possible. See the Upgrade guide for existing guards to Guard v1.1 for more info.
The Listen integration has been supervised by @thibaudgg and executed by @Maher4Ever, @rymai and @thibaudgg.
- Improve Thor dependency '~> 0.14.6' => '>= 0.14.6'. (@thibaudgg)
- #274 & #275 Make the Bundler warning less scary and more friendly. (@mcmire)
- #270 Make urgency configurable for libnotify/notifysend. (@viking)
- #254 Add the possibility to pause/unpause by sending OS signal. (@steakknife)
- #261 Clarify the usage of the term
guard-name
in the README. (@spadin) - Add a
--no-bundler-warning
option to Guard start. (@netzpirat) - Update vendor/darwin. (@thibaudgg)
- #260 Don't show Bundler warning when no Gemfile present. (@netzpirat)
- #259 Fix
guard show
on Ruby 1.8.7. (@netzpirat and @rymai)
- #236 Add support for
notifysend
. (@alandipert) - Update vendor/darwin to rb-fsevent 0.9.0. (@thibaudgg)
- #249 & #250 Fix programmatic examples that didn't work. (@oreoshake)
- #238 Don't try to load the FSEvents listener on older versions of OSX. (@philomory)
- #233 Guard::Listener.select_and_init requires hash. (reported by @sunaku, fixed by @thibaudgg)
- #227 & #232 Add the ability to initialize all guards at once. (proposed by @rupert654, done by @Maher4Ever)
- Add Gemnasium dependency status image to README. (@laserlemon)
- Update vendor/darwin. (@thibaudgg)
- #223: Warn if Guard isn't launched with
bundle exec
. (Proposed by @thibaudgg, done by @netzpirat)
- #226: Use a direct file descriptor with stty. (@netzpirat)
- #218: Watching directory with
-A
option only reports a deleted file the first time around. (@rymai) - #174: Not creating timestamps for new files with
-A
option. (@rymai) - #216: Fix exit-status codes for Guard. (@Maher4Ever)
- #213 & 214: Fixes the "ERROR: No guards found in Guardfile" message wrongly displayed when running
guard list
. (@pirukire)
- Improved Readline constraints. (@netzpirat)
- Stop & start all guards on Guardfile reevaluation. (@thibaudgg)
- Terminal keep-alive causing ERROR: Unknown command. (@waldo)
- Add the ability to load user defined templates. (@hawx)
- Fix guard-rspec notifications by using ENV variable to store Notifier.notifications. (@thibaudgg)
- Fix terminal status after interrupting the Readline interactor. (@Maher4Ever)
- Add
interactor
to DSL to allow switching Guard interaction implementation. (@netzpirat) - Add quit action to the interactor. (@Maher4Ever)
- Fix wrong
--no-vendor
option. (@netzpirat) - #195: Empty watch directory prohibit Guard from running. (reported by @madtrick, fixed by @netzpirat)
- #173: Cannot set the watch_all_modifications option. (reported by @sutherland, fixed by @netzpirat)
- Fix
guard init
when a guard name is given. (@rymai)
- #165: Allow underscores in Guard name. (@benolee)
- Add readline support to the interactor. (@netzpirat)
- Add support for notification configuration. (@netzpirat)
- Fix
guard init
when a guard name is given. (@rymai)
- #166: Fix silent failure after re-evaluating Guardfile. (reported by @dgutov, fixed by @rymai, special thanks to @dyfrgi for the reproducible test case)
- #168: Fix
guard init
path to Guardfile template. (reported by @semperos) - #167: Include objects in changed_paths when Guard allows any return from the watchers. (reported by @earlonrails, fixed by @netzpirat)
reload
andrun_all
Guard terminal interactions actions can be scoped to only run on a certain guard or group. (@thibaudgg)- Add cli option (-i / --no-interactions) to turn off Guard terminal interactions. (@thibaudgg)
- Add support for Growl Notification Transport Protocol. (@netzpirat)
- #157: Allow any return from the Guard watchers. (@earlonrails)
- #156: Log error and diagnostic messages to STDERR. (@sunaku)
- #152: Growl Notify API update for a graceful fail. (@scottdavis)
- #160: Avoid
Guard is not missing constant ...
exceptions. (reported by @earlonrails, fixed by @netzpirat)
- #149 & #150: Fix issue where interator thread was continuing to capture input from stdin while a guard is being executed. (reported by @hardipe, fixed by @f1sherman)
- #145: Fix over-utilization of CPU in Interactor. (@johnbintz)
- #146: Use a mutex instead of a lock for more efficient/simple locking. (@f1sherman)
- Make Guard implementation of
:task_has_failed
simple. (@netzpirat)
- Fixed guard stop to prevent run_guard_task(:stop) to be skipped guard-spork issue #28. (@thibaudgg)
- Update docs regarding :task_has_failed. (@netzpirat)
- #144: Fix
guard init
. (reported by @fabioyamate, fixed by @rymai)
- #137: Fix interacting with tools like ruby-debug. (@hron & @netzpirat)
- #138: Fixed comments in example scaffold to reference interactions. (@rmm5t & @netzpirat)
- #136: New CLI
:watch_all_modifications
/-A
option to watch for deleted and moved files too. (@limeyd & @netzpirat) - #97: Guard dependencies. Task execution can now be halted if a Guard throws
:task_has_failed
andGuard::Dsl#group
options include:halt_on_fail => true
. (@rymai) - #121:
Guard.guards
andGuard.groups
are now smart accessors. Filters can be passed to find a specific Guard/group or several Guards/groups that match (see YARDoc). (@rymai & @ches) - New
Guard::Group
class to store groups defined in Guardfile (withGuard::Dsl#group
). (@rymai)
- Specs refactoring. (@netzpirat)
- Full YARD documentation. (@netzpirat & a little of @rymai)
- Posix Signals handlers (
Ctrl-C
,Ctrl-\
andCtrl-Z
) are no more supported and replaced by$stdin.gets
. Please refer to the "Interactions" section in the README for more information. (@thibaudgg) - JRuby & Rubinius support (beta). (@thibaudgg & @netzpirat)
- #42: New DSL method:
callback
allows you to execute arbitrary code before or after any of thestart
,stop
,reload
,run_all
andrun_on_change
guards' method. New Wiki page for documenting it. (@monocle & @rymai) - Ability to 'pause' files modification listening. Please refer to the "Interactions" section in the README for more information. (@thibaudgg)
- Remove the need to scan the whole directory after guard's
run_on_change
method. (@thibaudgg)
- #130: Adds
ignore_paths
method to DSL. (@ianwhite) - #128: Users can add additional settings to
~/.guard.rb
that augment the existing Guardfile. (@tpope)
- Re-add the possibility to use the
growl
gem since thegrowl_notify
gem this is currently known to not work in conjunction with Spork. (@netzpirat) - Ensure that scoped groups and group name are symbolized before checking for inclusion. (@rymai)
- Groups are now stored in a
@groups
variable (will be used for future features). (@rymai) - Guards will now receive their group in the options hash at initialization (will be used for future features). (@rymai)
- Explain the growl/growl_notify differences in the README. (@netzpirat)
- #120: remove
guardfile_contents
when re-evaluating so that the Guardfile gets reloaded correctly. (@mordaroso) - #119:
Dsl.evaluate_guardfile
uses all groups if none specified. (@ches)
- Pull request #107: Small spelling fix. (@dnagir)
Dir.glob
now ignores files that don't need to be watched. (@rymai)
- #99: [OS X] Switch from growl gem to growl_notify gem. (@johnbintz)
- #115: [Linux] Add
:transient => true
to default libnotify options. (@zonque) - #95: Output system commands and options to be executed when in debug mode. (@uk-ar and @netzpirat)
Guard::Dsl.revaluate_guardfile
has been renamed toGuard::Dsl.reevaluate_guardfile
. (@rymai)- New CLI options: (@nestegg)
watchdir
/-w
to specify the directory in which Guard should watch for changes,guardfile
/-G
to specify an alternate location for the Guardfile to use.
- #90: Refactoring of color handling in the
Guard::UI
. (@stereobooster)
- Fixed
guard show
command. (@bronson & @thibaudgg)
- Guard::Ego is now part of Guard, so Guardfile is automagically re-evaluated when modified. (@thibaudgg)
- #91: Show Guards in Guardfile with the
guard -T
. (@johnbintz)
- #98: Multiple calls per watch event on linux with rb-inotify. (@jeffutter & @netzpirat)
- #94: Show backtrace in terminal when a problem with a watch action occurs. (@capotej)
- #88: Write exception trace in the terminal when a supervised task fail. (@mcmire)
- Color in red the "ERROR:" flag when using
UI.error
. (@rymai) - #79 and Pull request #82: Improve INotify support on Linux. (@Gazer & @yannlugrin)
- #12 and Pull request #86: Eventually exits with SystemStackError. (@stereobooster)
- #84: Use RbConfig instead of obsolete and deprecated Config. (@etehtsea)
- #80: Watching dotfile (hidden files under unix). (reported by @chrisberkhout, fixed by @yannlugrin)
- Clear the terminal on start when the
:clear
option is given. (@rymai) - Rename home directory Guardfile to
.Guardfile
. (@tpope)
- Fixed Guard::Version in ruby 1.8.7 (@thibaudgg)
- Fix (@mislav) link in CHANGELOG (Note: this is a recursive CHANGELOG item). (@fnichol)
- #77: Refactor
get_guard_class
to first try the constant and fallback to require + various tweaks. (@mislav) - Notifier improvement, don't use system notification library if could not be required. (@yannlugrin)
- In Ruby < 1.9,
Symbol#downcase
doesn't exist! (@rymai)
- #73: Allow DSL's
group
method to accept a Symbol as group name. (@johnbintz) - #51: Allow options (like
:priority
) to be passed through to the Notifier. (@indirect & @netzpirat)
- #74: Added link definitions to make the CHANGELOG more DRY! That's for sure now, we have the cleanest CHANGELOG ever! (even the link definitions are sorted alphabetically!) (@pcreux)
- #69: Fixed typo in README:
Ctr-/
=>Ctr-\
. (@tinogomes) - #66: Support for dashes in guard names. (@johnbintz)
- Require
guard/ui
becauseGuard::Notifier
can be required without full Guard. (@yannlugrin) - Handled quick file (<1s) modification. Avoid to catch modified files without content modification (sha1 checksum). (@thibaudgg & @netzpirat)
- Fixed
Guard::Notifier
(when growl/libnotify not present). (@thibaudgg) - Fixed Rubygems deprecation messages. (@thibaudgg)
- #67: Allow Guardfile in
$HOME
folder. (@hashrocketeer) - #64: Windows notifications support. (@stereobooster)
- #63: Refactor listeners to work as a library. (@niklas)
- Use
ENV["GUARD_NOTIFY"]
to disable notifications. (@thibaudgg) - Cleaning up all specs. (@netzpirat)
- #60: Added Windows support. (@stereobooster)
- #58: Extract code from signal handlers into methods. (@nicksieger)
- #55: It is now possible to pass
:guardfile
(a Guardfile path) or:guardfile_contents
(the content of a Guardfile) toGuard::Dsl.evaluate_guardfile
. Hence this allows the use ofGuard::Dsl.evaluate_guardfile
in a programmatic manner. (@anithri, improved by @rymai)
- #41: Removed useless Bundler requirement. (@thibaudgg)
- Changed CHANGELOG from RDOC to Markdown and cleaned it! Let's celebrate! (@rymai)
- Changed README from RDOC to Markdown! Let's celebrate! (@thibaudgg)
- #48: Adding support for inline Guard classes rather than requiring a gem. (@jrsacks)
- Fixed
new_modified_files
rerun conditions onGuard.run_on_change_for_all_guards
. (@thibaudgg)
- #43: Fixed
guard init
command. (@brainopia)
- Return unique filenames from Linux listener. (Marian Schubert)
Guard.get_guard_class
return wrong class when loaded nested class. (@koshigoe)- #35: Fixed open-gem/gem_open dependency problem by using
gem which
to locate guards gem path. (reported by @thierryhenrio, fixed by @thibaudgg) - #38 & Pull request #39: Fixed an invalid ANSI escape code in
Guard::UI.reset_line
. (@gix)
- #28: New
-n
command line option to disable notifications (Growl / Libnotify). (@thibaudgg)
- Avoid launching
run_on_change
guards method when no files matched.--clear
guard argument is now usable. (@thibaudgg)
- The whole directory is now watched during
run_on_change
to detect new files modifications. (@thibaudgg) - #26: New DSL method:
group
allows you to group several guards. New CLI option:--group group_name
to specify certain groups of guards to start. (@netzpirat) watch
patterns are now more strict: strings are matched withString#==
,Regexp
are matched withRegexp#match
. (@rymai)- A deprecation warning is displayed if your
Guardfile
containsString
that look likeRegexp
(bad!). (@rymai) - It's now possible to return an
Enumerable
in thewatch
optional blocks in theGuardfile
. (@rymai)
- #5: avoid creating new copy of
fsevent_watch
every time a file is changed. (reported by @stouset, fixed by @thibaudgg)
- #7: Fixes for Linux support. (@yannlugrin)
- #6: Locate guard now chomp newline in result path. (@yannlugrin)
- #3:
guard init <guard-name>
no more needGemfile
butopen_gem
is required now. (reported by @wereHamster, fixed by @thibaudgg) - #2: 1.8.6 compatibility. (reported by @veged, fixed by @thibaudgg)
- Removes Growl & Libnotify dependencies. (@thibaudgg)
- Improved listeners support (
rb-fsevent
&rb-inotify
). (@thibaudgg) - Added polling listening fallback. (@thibaudgg)