- Work around a Listen issue where the stop task isn't executed. (@netzpirat)
- Add a Coolline based interactor (Ruby 1.9.3 only). (@netzpirat)
- More flexible command parser for all interactors. (@netzpirat)
- Add 'show' command to describe all plugins in the interactor. (@netzpirat)
- Add 'change' command to trigger a file change event in the interactor. (@netzpirat)
- #283 Fix
guard init
. (reported by @ashleyconnor, fixed by @rymai)
- Listening is now handled by the Listen gem.
- Replace the
--verbose
option with the--debug
option. - 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 and #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 and #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 a hash. (reported by @sunaku, fixed by @thibaudgg) - #227 and #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 and #214 Fix the "ERROR: No guards found in Guardfile" message wrongly displayed when running
guard list
. (@pirukire)
- Improve Readline constraints. (@netzpirat)
- Stop and 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 and #150 Fix issue where interactor 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)
- Fix guard stop to prevent
run_guard_task(:stop)
from being 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 and @netzpirat)
- #138 Fix comments in example scaffold to reference interactions. (@rmm5t and @netzpirat)
- #136 New CLI
:watch_all_modifications
/-A
option to watch for deleted and moved files too. (@limeyd and @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 and @ches) - New
Guard::Group
class to store groups defined in Guardfile (withGuard::Dsl#group
). (@rymai)
- Specs refactoring. (@netzpirat)
- Full YARD documentation. (@netzpirat and 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 and Rubinius support (beta). (@thibaudgg and @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 and @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 Add
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
instance 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)
- #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)
- Fix
guard show
command. (@bronson and @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 and @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 #82 Improve INotify support on Linux. (@Gazer and @yannlugrin)
- #12 and #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)
- Fix Guard::Version in ruby 1.8.7 (@thibaudgg)
- Fix (@mislav) link in the 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 and @netzpirat)
- #74 Add 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 Fix 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) - Handle quick file (<1s) modification. Avoid to catch modified files without content modification (sha1 checksum). (@thibaudgg and @netzpirat)
- Fix
Guard::Notifier
(when growl/libnotify not present). (@thibaudgg) - Fix 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 Add Windows support. (@stereobooster)
- #58 Extract code from signal handlers into methods. (@nicksieger)
- #55 It's 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 Remove useless Bundler requirement. (@thibaudgg)
- Change CHANGELOG from RDOC to Markdown and cleaned it! Let's celebrate! (@rymai)
- Change README from RDOC to Markdown! Let's celebrate! (@thibaudgg)
- #48 Add support for inline Guard classes rather than requiring a gem. (@jrsacks)
- Fix
new_modified_files
rerun conditions onGuard.run_on_change_for_all_guards
. (@thibaudgg)
- #43 Fix
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 Fix open-gem/gem_open dependency problem by using
gem which
to locate guards gem path. (reported by @thierryhenrio, fixed by @thibaudgg) - #38 and #39 Fix 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 Fix 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)
- Remove Growl and Libnotify dependencies. (@thibaudgg)
- Improve listeners support (
rb-fsevent
andrb-inotify
). (@thibaudgg) - Add polling listening fallback. (@thibaudgg)