class LittleGhost::Support::Callbacks

Callbacks lets extensions prepare, replace, or cancel framework work in a predictable order. A later callback sees any replacement made earlier in the chain.

A callback may return Callbacks.continue, Callbacks.cancel, or Callbacks.replace. Any other return value means continue. Replacements become the payload for later callbacks.

Every decision responds to continue?, cancel?, and replace?. A cancellation also exposes reason; a replacement exposes value. Extensions should depend on these methods rather than a decision’s concrete class.

callbacks = LittleGhost::Support::Callbacks.new(:prepare)
callbacks.on(:prepare) { |payload| Callbacks.replace(payload.merge(debug: true)) }
decision = callbacks.run(:prepare, {})
decision.value # => {debug: true}