Sha256: 60cbd71c4bb2c707e026894833f54509269350b449ba2fe34240d9604e332de8
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module Spring module Watcher class Listen < Abstract attr_reader :listener def self.available? require "listen" require "listen/version" true rescue LoadError false end def start unless @listener @listener = ::Listen.to(*base_directories, relative_paths: false) @listener.latency(latency) @listener.change(&method(:changed)) if ::Listen::VERSION >= "1.0.0" @listener.start else @listener.start(false) end end end def stop if @listener @listener.stop @listener = nil end end def subjects_changed if @listener && @listener.directories.sort != base_directories.sort restart end end def watching?(file) files.include?(file) || file.start_with?(*directories) end def changed(modified, added, removed) synchronize do if (modified + added + removed).any? { |f| watching? f } mark_stale end end end def base_directories ([root] + files.reject { |f| f.start_with? root }.map { |f| File.expand_path("#{f}/..") } + directories.reject { |d| d.start_with? root } ).uniq end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spring-0.0.9 | lib/spring/watcher/listen.rb |