seniorRuby

Analyze the mechanics of Dynamic Constants and constant resolution vulnerabilities.

Updated May 17, 2026

Short answer

Constants in Ruby are mutable and resolved lexicographically via nesting paths (Module.nesting), falling back to the inheritance chain if not found.

Deep explanation

Unlike many languages where constants are immutable values fixed at compile time, Ruby constants are dynamic and can be modified or reassigned at runtime (which triggers a warning). Constant resolution follows a specific lookup path: it first checks the current lexical nesting via Module.nesting, then searches up the superclass inheritance chain of the surrounding class, and finally checks Object. This lookup behavior can lead to bugs if a class inadvertently accesses a fallback constant from the global namespace instead of a scoped definition.

Unlock with a Pro subscription to view this section.

View pricing

Real-world example

No real-world example available yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

Common mistakes

No common mistakes listed yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

Follow-up questions

No follow-up questions available yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

More Ruby interview questions

View all →