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



358
359
360
361
362
363
364
365
366
# File 'lib/upkeep/runtime.rb', line 358

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

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

.capturing?Boolean

Returns:

  • (Boolean)


340
341
342
# File 'lib/upkeep/runtime.rb', line 340

def capturing?
  !Thread.current[THREAD_KEY].nil?
end

.drainObject



344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/upkeep/runtime.rb', line 344

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



332
333
334
335
336
337
338
# File 'lib/upkeep/runtime.rb', line 332

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

.record(event) ⇒ Object



324
325
326
327
328
329
330
# File 'lib/upkeep/runtime.rb', line 324

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

.resetObject



319
320
321
322
# File 'lib/upkeep/runtime.rb', line 319

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