Class: Syncbox::Syncer

Inherits:
Object
  • Object
show all
Defined in:
lib/syncbox/syncer.rb

Instance Method Summary collapse

Constructor Details

#initialize(local_directory, store) ⇒ Syncer

Initializes listener

Note: raise arguement error when local_directory does not exist.

Parameters:

  • local_directory (String)
  • store (Store)

Raises:

  • (ArgumentError)


13
14
15
16
17
18
# File 'lib/syncbox/syncer.rb', line 13

def initialize(local_directory, store)
  raise ArgumentError, "Local directory #{local_directory} does not exist." unless Dir.exists?(local_directory)
  @local_directory = local_directory    
  @store = store
  @listener = Listen.to(local_directory).latency(0.1)
end

Instance Method Details

#syncObject

Listen to local directory Sync local action to remote store



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/syncbox/syncer.rb', line 23

def sync
  callback = Proc.new do |modified, added, removed|
    added && added.each do |add_file|
      @store.add(@local_directory + "/" + add_file)
    end
    modified && modified.each do |modified_file|
      @store.modify(@local_directory + "/" + modified_file)
    end
    removed && removed.each do |remove_file|
      @store.remove(@local_directory + "/" + remove_file)
    end
  end
  @listener.change(&callback)     # convert the callback to a block and register it
  @listener.start!                # have to use !
end