我正在使用Rails.logger.debug打印变量进行调试。问题是它以不可读的格式打印哈希(无法区分键和值)。例如,我将以下行添加到我的代码库
#code_base.rb
my_hash = {'a' => 'alligator', 'b'=>'baboon'}
Rails.logger.debug my_hash
然后我启动我的rails应用程序并输入
tail -f log/development.log
但是当打印my_hash时,它看起来像
bbaboonaalligator
密钥和值被压缩,无法解析。你们知道我应该怎么做才能解决这个问题吗?
答案 0 :(得分:16)
没关系,我找到了自己问题的答案。我需要使用
my_hash = {'a' => 'alligator', 'b'=>'baboon'}
Rails.logger.debug "#{my_hash.inspect}"
然后,它看起来像
{"b"=>"baboon", "a"=>"aligator"}
答案 1 :(得分:10)
使用to_yaml
例如:
logger.debug my_hash.to_yaml
这是一种易于阅读的多行格式。 inspect
方法只是输出一个字符串。
答案 2 :(得分:2)
my_hash = {'a' => 'alligator', 'b'=>'baboon'}
logger.debug "#{my_hash}"
然后,它看起来像
{"b"=>"baboon", "a"=>"aligator"}
不需要检查
答案 3 :(得分:0)
还有另一种方法可以做到这一点。模块pp.rb内置了一个ruby,它是Ruby对象的漂亮打印机。
p的非漂亮打印输出是:
#<PP:0x81fedf0 @genspace=#<Proc:0x81feda0>, @group_queue=#<PrettyPrint::GroupQueue:0x81fed3c @queue=[[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], []]>, @buffer=[], @newline="\n", @group_stack=[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], @buffer_width=0, @indent=0, @maxwidth=79, @output_width=2, @output=#<IO:0x8114ee4>>
pp的精美打印输出是:
#<PP:0x81fedf0
@buffer=[],
@buffer_width=0,
@genspace=#<Proc:0x81feda0>,
@group_queue=
#<PrettyPrint::GroupQueue:0x81fed3c
@queue=
[[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
[]]>,
@group_stack=
[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
@indent=0,
@maxwidth=79,
@newline="\n",
@output=#<IO:0x8114ee4>,
@output_width=2>