mongodb/mongoid · error · Mongoid::Errors::InvalidAroundCallback
An around callback must contain a yield in its definition.
Error message
An around callback must contain a yield in its definition.
What it means
Raised by _mongoid_run_child_callbacks_with_around when an embedded child's around callback completes without yielding, which would otherwise silently skip the rest of the callback chain and the wrapped operation. The check runs after resuming each child's fiber.
Solutions
- Ensure every around callback body contains a yield statement
- Review custom around_* callbacks defined on embedded models and add the missing yield
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at lib/mongoid/interceptable.rb:185 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mongodb/mongoid@0da0e23d71 (2026-08-23).
Data as JSON: /api/errors/0fca699139d72670.
Report an issue: GitHub.
Appendix: source
Thrown at lib/mongoid/interceptable.rb:185
#
# @api private
def _mongoid_run_child_callbacks_with_around(kind, children: nil, &block)
children ||= cascadable_children(kind)
with_children = !Mongoid::Config.prevent_multiple_calls_of_embedded_callbacks
return block&.call if children.empty?
fibers = children.map do |child|
Fiber.new do
child.run_callbacks(child_callback_type(kind, child), with_children: with_children) do
Fiber.yield
end
end
end
fibers.each do |fiber|
fiber.resume
raise Mongoid::Errors::InvalidAroundCallback unless fiber.alive?
end
block&.call
fibers.reverse.each(&:resume)
end
# Execute the callbacks of given kind for embedded documents without
# around callbacks.
#
# @param [ Symbol ] kind The type of callback to execute.
# @param [ Array<Document> ] children Children to execute callbacks on. If
# nil, callbacks will be executed on all cascadable children of
# the document.
#
# @api private
def _mongoid_run_child_callbacks_without_around(kind, children: nil, &block)
children ||= cascadable_children(kind)View on GitHub (pinned to 0da0e23d71)