Crystal shard to watch file changes. This shard use the same code implemented here (Guardian) and here (Sentry).
Add this to your application's shard.yml
:
dependencies:
watcher:
github: faustinoaq/watcher
Use the Watcher.watch
to watch files or file groups, for example:
require "watcher"
Watcher.watch("src/assets/js/*.js") do |changes, state|
# changes is a Hash(String, Watcher::Status) mapping a filename to its change-status
# change-status is Created | Modified | Deleted
changes.each do |name, status|
puts "{status}: #{name}"
end
end
Also you can have more than one watcher, just use spawn
spawn do
Watcher.watch(["src/assets/*.css", "src/views/*.html"]) do |changes|
# ...
end
end
# Other watcher
Watcher.watch(...) do |changes|
# ...
end
And you can change time interval for a watcher.
Watcher.watch("public/*.json", interval: 0.5) do |changes|
# ...
end
Watcher uses timestamps to check file changes every second, if you want some more advanced then you can use Watchbird that uses libnotify
to check events like modify, access and delete but just work in Linux for now.
- Fork it ( https://github.com/faustinoaq/watcher/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- faustinoaq Faustino Aguilar - creator, maintainer