Два последовательных вызова метода могут, в зависимости от вашей настройки, завершиться выполнением в
- одного и того же процесса в том же потоке (запоминание работает)
- одного и того же процесса в другом потоке (запоминание работает)
- разные процессы (запоминание не работает)
- даже на другом компьютере / виртуальной машине (запоминание не работает)
Если работники используют тот же экземпляр DocumentSynchronizer, тогда кеширование будет работать, иначе нет.
В вашем случае (расширение комментария @Stefan) запоминание не приносит никакой пользы, потому что оно используется внутри метода initialize
. Этот метод выполняется только один раз и . Ничего не выполняется до , которые могут установить значение. Так что нет никакой разницы в @variable = xxx
.
. Заметка имеет больше смысла, если вы используете ее следующим образом:
class Something
def value
@value ||= some_expensive_calculation_that_can_be_cached
end
end
и затем не используете @value
напрямую, а используете метод value
. Это дает дополнительное преимущество, заключающееся в отсрочке расчета до фактического его использования (если оно используется не всегда)