Вот небольшой отладочный код, который я использую повсеместно (я помещаю его в отдельный файл, чтобы его можно было использовать везде, где это необходимо).Это можно использовать двумя способами.Передав одно или несколько значений, он просто проверяет их и записывает результат в $ stderr.Но пройдя блок, который возвращает одну или несколько вещей, он записывает их с их именами .
#!/usr/bin/ruby1.8
def q(*stuff, &block)
if block
s = Array(block[]).collect do |expression|
value = eval(expression.to_s, block.binding).inspect
"#{expression} = #{value}"
end.join(', ')
$stderr.puts s
else
stuff.each do
|thing| $stderr.print(thing.inspect + "\n")
end
end
end
i = 1
q i # => 1
q {:i} # => i = 1
name = "Fred"
q [name, name.length] # => ["Fred", 4]
q {[:name, 'name.length']} # => name = "Fred", name.length = 4
Примечание: функция q
и другие теперь естьдоступный в cute_print драгоценный камень.