class MBidle::Sync

Public Class Methods

after_sync(&block) click to toggle source
# File lib/mbidle/sync.rb, line 44
def after_sync(&block)
  after_sync_callbacks << block
end
after_sync_callbacks() click to toggle source
# File lib/mbidle/sync.rb, line 40
def after_sync_callbacks
  @aftersync_callbacks ||= []
end
failed(process) click to toggle source
# File lib/mbidle/sync.rb, line 21
def failed(process)
  Log.warn "#{process.command} failed with status #{process.status.exitstatus}"
  Log.warn process.stderr.output
  @queue.pop(&method(:run))
end
queue() click to toggle source
# File lib/mbidle/sync.rb, line 4
def queue
  @queue ||= begin
               queue = UniqueQueue.new
               queue.pop(&method(:run))
               queue
             end
end
run(account_name) click to toggle source
# File lib/mbidle/sync.rb, line 12
def run(account_name)
  command = "#{MBSYNC_COMMAND} #{account_name}"
  Log.debug "Run #{command}"
  EM::SystemCommand.execute(command) do |on|
    on.failure(&method(:failed))
    on.success(&method(:succeeded))
  end
end
schedule(*accounts) click to toggle source
# File lib/mbidle/sync.rb, line 33
def schedule(*accounts)
  names = accounts.compact.map(&:name).uniq
  return if names.empty?

  queue.push(*names)
end
succeeded(process) click to toggle source
# File lib/mbidle/sync.rb, line 27
def succeeded(process)
  Log.debug "#{process.command} finished."
  @queue.pop(&method(:run))
  after_sync_callbacks.each(&:call)
end