Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Kernel | untrace_var

概要

Kernel#untrace_var(varname, hook = nil)

詳細

グローバル変数 varname に関連付けられたフックを解除します。
hook が指定された場合にはそのフックだけを解除します。
省略するか nil を与えた場合は varname のフックを全て解除します。

サンプルコード
active_hook = proc { |val|puts "active #{val}" if val}
disable_hook = proc { |val|puts "disable #{val}" unless val}
trace_var(:$VERBOSE, active_hook)
trace_var(:$VERBOSE, disable_hook)

puts "↓↓↓VERBOSE の2個のフックが有効になっている↓↓↓"
$VERBOSE = true
$VERBOSE = false
puts "↑↑↑VERBOSE の2個のフックが有効になっている↑↑↑"

untrace_var(:$VERBOSE, active_hook)
puts "↓↓↓VERBOSE faseのフックだけ削除された↓↓↓"
$VERBOSE = true
$VERBOSE = false
puts "↑↑↑VERBOSE faseのフックだけ削除された↑↑↑"

trace_var(:$VERBOSE, active_hook)
untrace_var(:$VERBOSE)
puts "↓↓↓出力されない↓↓↓"
$VERBOSE = true
$VERBOSE = false
puts "↑↑↑出力されない↑↑↑"

出力

↓↓↓VERBOSE の2個のフックが有効になっている↓↓↓
active true
disable false
↑↑↑VERBOSE の2個のフックが有効になっている↑↑↑
↓↓↓VERBOSE faseのフックだけ削除された↓↓↓
disable false
↑↑↑VERBOSE faseのフックだけ削除された↑↑↑
↓↓↓出力されない↓↓↓
↑↑↑出力されない↑↑↑