Class: Stack::Watcher
- Inherits:
-
Object
- Object
- Stack::Watcher
- Defined in:
- lib/stack/watcher.rb
Instance Attribute Summary collapse
-
#directory_watcher ⇒ Object
Returns the value of attribute directory_watcher.
-
#generator ⇒ Object
Returns the value of attribute generator.
-
#keep_alive ⇒ Object
Returns the value of attribute keep_alive.
-
#source ⇒ Object
Returns the value of attribute source.
-
#target ⇒ Object
Returns the value of attribute target.
Instance Method Summary collapse
-
#initialize(generator) ⇒ Watcher
constructor
A new instance of Watcher.
- #observe ⇒ Object
Constructor Details
#initialize(generator) ⇒ Watcher
Returns a new instance of Watcher.
8 9 10 11 12 13 14 |
# File 'lib/stack/watcher.rb', line 8 def initialize(generator) self.generator = generator self.source = self.generator.source self.target = self.generator.target self.keep_alive = true end |
Instance Attribute Details
#directory_watcher ⇒ Object
Returns the value of attribute directory_watcher.
5 6 7 |
# File 'lib/stack/watcher.rb', line 5 def directory_watcher @directory_watcher end |
#generator ⇒ Object
Returns the value of attribute generator.
4 5 6 |
# File 'lib/stack/watcher.rb', line 4 def generator @generator end |
#keep_alive ⇒ Object
Returns the value of attribute keep_alive.
6 7 8 |
# File 'lib/stack/watcher.rb', line 6 def keep_alive @keep_alive end |
#source ⇒ Object
Returns the value of attribute source.
3 4 5 |
# File 'lib/stack/watcher.rb', line 3 def source @source end |
#target ⇒ Object
Returns the value of attribute target.
3 4 5 |
# File 'lib/stack/watcher.rb', line 3 def target @target end |
Instance Method Details
#observe ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/stack/watcher.rb', line 16 def observe dirs = "" Dir.chdir(self.source) do dirs = Dir['*'].select { |x| File.directory?(x) } dirs -= ['_stack'] dirs = dirs.map { |x| "#{x}/**/*" } dirs += ['*'] end self.directory_watcher = DirectoryWatcher.new(self.source) self.directory_watcher.interval = 1 self.directory_watcher.glob = dirs self.directory_watcher.add_observer do |*args| self.generator.process! self.generator.transform! time = Time.now.strftime("%Y-%m-%d %H:%M:%S") puts "[#{time}] #{args.size} files changed and processed." end self.directory_watcher.start if self.keep_alive loop { sleep 1000 } end end |