はじめに
- ちょっとサーバに返却されてる値を
GB
やTB
とかみたいにお手軽に確認したい。 -
9.gigabytes
などの9GB
を900000
みたいな何かにするには楽です。
NumberToHuman とかでググると
- 「number_to_human_size ruby」と検索すると、結構ActionView のHelper のAPI の記事がよく出てきます。
- ですが、consoleで以下のようにやると、
> ActionView::Helpers::NumberHelper.number_to_human_size 10
NoMethodError: undefined method `number_to_human_size' for ActionView::Helpers::NumberHelper:Module
from (pry):5:in `<main>'
-
number_to_human_size
はmoduleのNumberHelper
に定義されてるので呼べません。 - しかしながらソースを追ってみると、結局ActiveSupport のメソッドにdelegate してることが分かります。
しかし
-
helper
というActionView::Base
のインスタンスを rails console から取得可能です。 - コメント欄にて、@suginoy さんご指摘いただきました、ありがとうございます!
rails_console
> sample = 10.gigabytes
> helper.number_to_human_size sample
=> 10 ギガバイト
##結論
- rails console からでも AtionView のインスタンスの取得が可能です!積極的に使いましょう!
- ActiveSupport にそれっぽい関数があるので、それを呼べばOK です。
pry(main)> ActiveSupport::NumberHelper.number_to_human_size 1024 ** 3
=> "1 GB"