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