Skip to content
Crystal shard to watch file changes using File.stat
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
logo
spec
src
.gitignore
.travis.yml
LICENSE
README.md
shard.yml

README.md

watcher

Build Status

Crystal shard to watch file changes. This shard use the same code implemented here (Guardian) and here (Sentry).

Installation

Add this to your application's shard.yml:

dependencies:
  watcher:
    github: faustinoaq/watcher

Usage

Use the keyword watch to watch files or file groups, for example:

require "watcher"

watch "src/assets/js/*.js" do |event|
  event.on_change do |files|
    files.each do |file, {first, timestamp}|
      puts "File #{file} has changed at #{timestamp}"
    end
    # ...
  end
end

Also you can have more than one watcher, just use spawn

spawn do
  watch ["src/assets/*.css", "src/views/*.html"] do |event|
    event.on_change do
      # ...
    end
  end
end

# Other watcher
watch ... do |event|
 #...
end

And you can change time interval for a watcher.

watch "public/*.json", interval: 0.5 do |event|
  event.on_change do
    # ...
  end
end

Also you can use Watcher.watch instead of watch.

How does it work?

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.

Contributing

  1. Fork it ( https://github.com/faustinoaq/watcher/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • faustinoaq Faustino Aguilar - creator, maintainer
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.