rakeに登録しているタスクなど、処理の実行中・処理の結果を視覚化することで実行する人がより分かりやすく、またミスも防げるようになったりします。
ということで、視覚化するための手法をまとめてみました。別のを思いついたら随時更新していこうと思います。
進行状況をプログレスバー形式で表示
@riocamposさんの進行状況をプログレスバーで表示を使えば簡単に実装できます。べんり。
エラーメッセージを赤で表示
エラーメッセージを赤く表示することで、視覚的にもエラーだと分かりやすくなります。
bashを使っているのであれば、\e[31m
と\e[0m
で囲むと文字が赤くすることができます(コマンドプロンプトは違うみたいです)。
printf "\e[31mここにメッセージを書く\e[0m\n"
ちなみに下記のコードを使えば他の文字色も可能です。
# 文字色を変える
"\e[30m" # Black
"\e[31m" # Red
"\e[32m" # Green
"\e[33m" # Yellow
"\e[34m" # Blue
"\e[35m" # Purple
"\e[36m" # Cyan
"\e[37m" # White
# 太字にする
"\e[1;30m" # Black
"\e[1;31m" # Red
"\e[1;32m" # Green
"\e[1;33m" # Yellow
"\e[1;34m" # Blue
"\e[1;35m" # Purple
"\e[1;36m" # Cyan
"\e[1;37m" # White
# アンダーラインを付ける
"\e[4;30m" # Black
"\e[4;31m" # Red
"\e[4;32m" # Green
"\e[4;33m" # Yellow
"\e[4;34m" # Blue
"\e[4;35m" # Purple
"\e[4;36m" # Cyan
"\e[4;37m" # White
# 背景色を付ける
"\e[40m" # Black
"\e[41m" # Red
"\e[42m" # Green
"\e[43m" # Yellow
"\e[44m" # Blue
"\e[45m" # Purple
"\e[46m" # Cyan
"\e[47m" # White
# 元の色に戻す
"\e[0m"
色のサンプルです。背景が黒なので黒文字が見えないですが。。。
アクセス中を bundle install形式で表示
bundle install
するときに表示されるFetchingのような、サイトにアクセスしてデータを取得中という表示をするにはこんな感じです。
t = Thread.new do
print "Fetching gem metadata from https://rubygems.org"
loop do
sleep 0.2
print "."
end
end
sleep 3 # たとえばアクセスとかの重い処理
t.kill
puts "", "access done!"
これは完全に自己満足ですが、まあなんか動いてるんだなくらいに思ってもらえれば。
ローディング中を npm install形式で表示
npm install
するときに表示されるローディングのような表示をするにはこんな感じです。
t = Thread.new do
load = ["-", "\\", "|", "/"]
(1..Float::INFINITY).lazy.map { |n|
sleep 0.06
"#{load[n % 4]}\r"
}.each{ |str| print str }
end
sleep 3 # たとえばアクセスとかの重い処理
t.kill
puts "finish loading!"
これも賑やかし程度に使うと吉ですかね。