最好的方法来漂亮打印一个散列
我有一个大的哈希嵌套数组和散列。 我想简单地打印出来,所以对用户来说是“可读的”。
我希望它有点像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输出? )
另一种比pp
或awesome_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:
使用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