Railsでのフレンドリーなバイトフォーマット

概要

バイトの整数表現を親しみやすいものにフォーマットする必要があります。Ruby または Rails にそのフォーマットを行ってくれるユーティリティ関数があることを願っています (もちろん、私の怠惰を永続させるためです)。

次のようなものを探しています:

format_bytes(1024)     -> "1 KB"
format_bytes(1048576)  -> "1 MB"

ActiveSupport にはその逆を行うための機能があるようですが、この方向で行う方法は見つかりませんでした。

存在しない場合、特にエレガントな解決策を持っている人はいますか?

解決策

人間のサイズに合わせた数字が探しているものです。

require 'action_view'
include ActionView::Helpers::NumberHelper
number_to_human_size(123)                                          # => 123 Bytes
number_to_human_size(1234)                                         # => 1.2 KB
number_to_human_size(12345)                                        # => 12.1 KB
number_to_human_size(1234567)                                      # => 1.2 MB
number_to_human_size(1234567890)                                   # => 1.1 GB
number_to_human_size(1234567890123)                                # => 1.1 TB
number_to_human_size(1234567, :precision => 2)                     # => 1.18 MB
number_to_human_size(483989, :precision => 0)                      # => 473 KB
number_to_human_size(1234567, :precision => 2, :separator => ',')  # => 1,18 MB