Module.nesting в instance_eval / exec или module_eval / exec

Я задал этот вопрос, когда пытался ответить this . Следующее является ожидаемым поведением:

module A
  p Module.nesting
end
# => [A]

Но следующее:

A.instance_eval{p Module.nesting}
A.instance_exec{p Module.nesting}
A.module_eval{p Module.nesting}
A.module_exec{p Module.nesting}

all return []. Почему они не работают так, как описано выше?

Дополнительный вопрос

Му слишком короток, предлагая интересный момент. Если это правильно, то Module.nesting будет одним из методов и переменных, которые зависят от буквального контекста, например Method # source_location , __ FILE __ . Это понимание правильное? Если да, может ли кто-нибудь предоставить перечень этих методов / переменных, которые зависят от буквального контекста? Думаю, было бы полезно для справки.

8
задан Community 23 May 2017 в 12:14
поделиться