У меня есть хэш. Один из этих ключей daily_budget
. После некоторого процесса daily_budget
был изменен, в то время как значения всех других ключей не изменились. Либо значение хэша для этого ключа изменилось, либо я клонирую хэш и устанавливаю это значение в клонированном хеше.
Я хочу шпионить за методом Hash#[]=
, чтобы выяснить, где это происходит. Я собирался его исправить, посмотреть на ключ с именем daily_budget
и выгрузить трассировку стека всякий раз, когда он установлен.
Я пытался использовать такой код:
module HashPatches
def []=(key, value)
puts ">>>> hey! I got here!"
super(key, value)
end
end
Hash.send(:include, HashPatches)
Кажется, что это изменение игнорируется, в то время как другие исправления на Hash
работают. Я сделал что-то не так?
Я также пытался использовать set_trace_func
для отслеживания вызовов в хэш с этим кодом,
set_trace_func proc { |event, file, line, id, binding, classname|
if file =~ /\/my_project_name\//
puts ">>>> #{id}"
puts ">>>> #{classname}"
puts ">>>> #{event}"
puts ">>>> #{file}"
puts ">>>> #{line}"
end
}
но :[]=
не отслеживается. Я удалил патч обезьяны. Мне не удалось отобразить значения :[]=
в этом выводе.
Есть ли способ отслеживать изменения хэшей, чтобы я мог отследить, где изменяется значение этого ключа?