Module: Upkeep::Runtime::ChangeLog

Defined in:
lib/upkeep/runtime.rb

Constant Summary collapse

THREAD_KEY =
:upkeep_change_log_events

Class Method Summary collapse

Class Method Details

.captureObject



337
338
339
340
341
342
343
344
345
# File 'lib/upkeep/runtime.rb', line 337

def capture
  previous = Thread.current[THREAD_KEY]
  events = []
  Thread.current[THREAD_KEY] = events

  [yield, events.dup]
ensure
  Thread.current[THREAD_KEY] = previous
end

.drainObject



323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/upkeep/runtime.rb', line 323

def drain
  if (events = Thread.current[THREAD_KEY])
    drained = events.dup
    events.clear
    drained
  else
    @mutex.synchronize do
      events = @events
      @events = []
      events
    end
  end
end

.eventsObject



315
316
317
318
319
320
321
# File 'lib/upkeep/runtime.rb', line 315

def events
  if (events = Thread.current[THREAD_KEY])
    events
  else
    @mutex.synchronize { @events.dup }
  end
end

.record(event) ⇒ Object



307
308
309
310
311
312
313
# File 'lib/upkeep/runtime.rb', line 307

def record(event)
  if (events = Thread.current[THREAD_KEY])
    events << event
  else
    @mutex.synchronize { @events << event }
  end
end

.resetObject



302
303
304
305
# File 'lib/upkeep/runtime.rb', line 302

def reset
  @mutex.synchronize { @events = [] }
  Thread.current[THREAD_KEY] = nil
end