if $DEBUG
class File
alias_method :original_initialize, :initialize
alias_method :original_close, :close
alias_method :original_puts, :puts
def initialize(file,mode="r")
if mode.downcase=="r"
original_initialize(file)
else
@filename = file
STDOUT.puts "--- File.open #{@filename} in mode #{mode} ---"
end
end
def close
if @filename
STDOUT.puts "--- File.close #{@filename} ---"
else
original_close
end
end
def puts(str)
if @filename
STDOUT.puts "--- #{@filename} << #{str}"
else
original_puts(str)
end
end
end
end
- 読み取りモードのとき=>通常通りのFileクラスの挙動
- それ以外のとき=>new,puts,closeを上書きして、実体のファイルには作用しないようにする