Releases: guard/listen
v2.8.0
Improvements
- #273 abort on filesystem loop
Notes
Listen will refuse to watch multiple copies of a physical directory within a watched directory.
This means you can either watch symlinked directories or the real ones - but not both.
This also means you can only have one symlink to a physical directory (which has to be outside the watched directory anyway).
Reasoning
It may be very "convenient" to listen to a "whole project", but this causes a confusion and a whole array of issues with symlinks.
Solutions / workarounds
-
Ideally, watch only the physical directories you need to monitor
-
Help with a technically related feature request #274 (PRs are welcome)
-
Freeze Listen in your Gemfile:
gem 'listen', '~> 2.7.12'
Issues
If none of the above solutions are acceptable in your case, feel free to post new issues or comment on existing ones
If despite this change symlinks don't work as accepted, please file a bug with a specific issue.
Caveats
On Linux, Listen "cheats" by translating events on physical paths to being relative to the watched directory.
This make is seem like Listen handles symlinks transparently, but likely won't work in every case.
(Feel free to post specific cases causing problems).
v2.7.12
v2.7.11
v2.7.10
Major:
- properly watch multiple directories on OSX (fixes #243)
- change how Celluloid logger is used to avoid conflicts (closes #248)
- sidestep issues with incompatible filename encodings (affects #250)
- fix TCP port/host parsing (fixes #245)
- fix TCP client reconnect issues (#253)
Minor:
- no longer force debug log level in *BSD
Known issues:
v2.7.9
Major:
- fixed #239 (deleting and adding file on OSX caused endless loop)
- fixed Ctrl-c handling and stopping all Listen instances
Minor:
- debugging: callback time is shown when LISTEN_GEM_DEBUGGING=2
Development:
- fsevent emulation on Linux is more accurate, which means OSX-specific paths can be tested under Linux
v2.7.8
v2.7.7
MAJOR speed improvement:
- hyperfast FS record building - should take Listen just a few seconds at most, even with hundreds of thousands of files! (closes #207)
Other improvements:
- record build time is shown when environment variable is set:
LISTEN_GEM_DEBUGGING=1
) - more robust file ignoring (removed relative path hack, silencer is always available)
- file ignoring has less overhead (avoids Celluloid + reuses Silencer instance)
- more strict+robust internals (by keeping events relative to and separate from watched dir)
- slightly smaller memory footprint (less info stored in Record)
Notes/warnings:
- undiscovered bugs related to file/path/dir handling are more likely to surface (!!) [but can be tracked down and fixed much faster]
- record building is now so fast, it can uncover new race conditions (e.g. if your app "relies" on Listen being "slow")
- while this is a patch release, there are a lot of internal changes - so test properly before upgrading Listen for production purposes!
v2.7.6
NOTE: this and following releases may include MAJOR changes and improvements unintentionally breaking compatibility - feel free to report issues (given sufficient details are included - see README) and submit pull requests! (If this bothers you, feel free to freeze your guard version, although previous behaviors and codebase will not be actively maintained, - but pull requests are always welcome).
Compatibility:
- TCP message format is incompatible with previous versions of Listen (!)
Bug fixes:
- fix TCP socket disconnect bug (deleting during iteration)
- improved WDM support, bug fixes + fixed failing specs
- fixed various race condition errors
- avoid sending empty results (fixes #230)
- apply ignore rules to TCP changes
- improve inaccurate mtime workaround checking
Editor support:
- Ignore IntelliJ editor files (which fixes editing detection)
- Ignore Vim files (for less noise when debugging)
Other features:
- collect changes while paused
- update Record while paused
- block until Record is finished building (to assure consistency and avoid obscure race conditions)
- retry TCP connection 3 times before failing
- autodetection of inaccurate mtime + activate workarounds on all OSs
Performance:
- reduce amount of lstat/fstat() calls
- smaller memory footprint of Record (due to using symbols)
- more accurate latency handling (main loop)
- more responsive TCP (avoiding wait delay on broadcaster side)
Debugging:
- Better debugging output for all adapters
- LISTEN_GEM_DEBUGGING now supports '1' (Logger::INFO) and '2' (Logger::DEBUG)'
- show crashes and errors by default instead of silently hiding them
- less Celluloid errors/warnings during termination
- fsevent emulation mode in Linux using: LISTEN_GEM_SIMULATE_FSEVENT=1
- accurately simulate OSX behavior on linux (using a mounted VFAT filesystem and LISTEN_GEM_SIMULATE_FSEVENT=1)
Development:
- migrate specs to RSpec 3.0.0rc1 (yay!)
- heaps of fixes to specs + refactoring
- list known issues+workarounds for BSD and Windows