Deconstruct Module prepending vs refinement priorities in method resolution trees.
Updated May 17, 2026
Short answer
Refinements take precedence over prepended modules within their active lexical scope, overriding all other layers in the method lookup chain.
Deep explanation
When a method is invoked, Ruby resolves its implementation by prioritizing active Refinements first. If a refinement is active in the current file, it executes regardless of whether the target class has prepended modules or direct overrides. If no refinement matches, Ruby falls back to the standard lookup chain, checking prepended modules next, followed by the base class definition.
Unlock with a Pro subscription to view this section.
View pricingReal-world example
No real-world example available yet.
Unlock with a Pro subscription to view this section.
Upgrade to ProCommon mistakes
No common mistakes listed yet.
Unlock with a Pro subscription to view this section.
Upgrade to ProFollow-up questions
No follow-up questions available yet.
Unlock with a Pro subscription to view this section.
Upgrade to Pro