最好的方法来漂亮打印一个散列

我有一个大的哈希嵌套数组和散列。 我想简单地打印出来,所以对用户来说是“可读的”。

我希望它有点像to_yaml – 这是非常可读的 – 但仍然太高科技看。

最终它将成为需要阅读这些数据块的最终用户,因此他们需要格式化干净。

有什么build议么?

require 'pp' pp my_hash 

如果你需要一个内置的解决scheme,只需要合理的换行符,请使用pp

如果你可以安装一个gem,使用awesome_print 。 (根据您的用户,您可能希望使用index:false选项来closures显示数组索引。)

如果你有JSON,我推荐使用JSON.pretty_generate(hash)因为它比awesome_print简单,在pre标签中看起来不错,并且允许从网页上轻松复制。 (另请参阅: 如何在Ruby on Rails中“漂亮”地格式化JSON输出? )

另一种比ppawesome_print更适合我的解决scheme:

 require 'pry' # must install the gem... but you ALWAYS want pry installed anyways Pry::ColorPrinter.pp(obj) 

如果你没有任何奇特的gem动作,但是有JSON,这个CLI行将在一个哈希上工作:

puts JSON.pretty_generate(my_hash).gsub(":", " =>")

 #=> { :key1 => "value1", :key2 => "value2", :key3 => "value3" } 

如果您打印给用户,请使用上面的答案。

如果你只想在控制台上打印它,我build议使用pry gem而不是irb。 除了漂亮的打印,撬还有很多其他function(检查下面的railscast)

gem安装撬

并检查这个railscast:

http://railscasts.com/episodes/280-pry-with-rails

使用Pry你只需要添加下面的代码到你的〜/ .pryrc:

 require "awesome_print" AwesomePrint.pry! 

在我尝试的所有gem中, show_data gem对我来说是最好的,我现在用它来广泛地在Rails中loggingparams hash

在Rails中,Ruby中的数组和哈希具有内置的to_json函数。 我只会使用JSON,因为它在Web浏览器(如Google Chrome)中非常易读。

这就是说,如果你担心它看起来太“科技型”,你应该写一个自己的函数来replace你的哈希值和数组中的大括号和方括号,并用空格和其他字符。

查找gsub函数是一个很好的方法来做到这一点。 继续玩不同的angular色和不同数量的空白,直到find看起来有吸引力的东西。 http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub