この記事は heroku Advent Calendar 2018 の 13 日目の記事です。

12 日目もわたくしマスタカの当番で、内容は『Heroku の Preboot 機能を深掘りした 』でした。その気になればドキュメント以上のことを探れることは、Heroku のメリットだと感じています。

今日は Heroku の BitBar plugin を紹介します。macOS 限定です。

BitBar とは

BitBar - Put anything in your Mac OS X menu bar

macOS のメニューバーにこんなものを置けるツールです。例として Homebrew Updates plugin を表示しています。

BitBar

標準出力を吐きさえすれば、シェルスクリプトでも Ruby でも言語を問わないのが気楽です。

↓ ちょっとだけ変更しています。

--- brew-updates.1h.sh.orig	2018-12-11 23:42:41.000000000 +0900
+++ brew-updates.1h.sh	2018-12-11 23:42:25.000000000 +0900
@@ -12,13 +12,13 @@
 /usr/local/bin/brew update > /dev/null || exit_with_error;

 PINNED=$(/usr/local/bin/brew list --pinned);
-OUTDATED=$(/usr/local/bin/brew outdated --quiet);
+OUTDATED=$(/usr/local/bin/brew outdated --verbose);

 UPDATES=$(comm -13 <(for X in "${PINNED[@]}"; do echo "${X}"; done) <(for X in "${OUTDATED[@]}"; do echo "${X}"; done))

 UPDATE_COUNT=$(echo "$UPDATES" | grep -c '[^[:space:]]');

-echo "↑$UPDATE_COUNT | dropdown=false"
+echo "🍺$UPDATE_COUNT | dropdown=false"
 echo "---";
 if [ -n "$UPDATES" ]; then
   echo "Upgrade all | bash=/usr/local/bin/brew param1=upgrade terminal=false refresh=true"

Heroku plugin

Heroku の異常に緩く気づける plugin です。https://status.heroku.com/ と同じ内容を API で取得しています。

Heroku plugin

Heroku apps:errors plugin

任意の Heroku App のエラーが分かる plugin です。この例では H27 Error (Client Request Interrupted) が直近 24 時間に 7 回発生しています。

Heroku apps:errors plugin

最新の Heroku Error Codes がなかったので、PR 作ったらすぐにマージされました。

スクリプトを見ると分かりますが、’$ heroku apps:errors’ で App のエラーを取得しています。CLI でも取得できたのですね。

↓ app は必ず変更する必要があります。あと、メニューバーは狭いので、文字数を減らしています。BitBar plugin は緩く変更できる点が気楽です。

--- herokuappserrors.1h.rb.orig	2018-12-11 23:36:27.000000000 +0900
+++ herokuappserrors.1h.rb	2018-12-11 23:36:10.000000000 +0900
@@ -14,7 +14,7 @@
 HEROKU_CMD="/usr/local/bin/heroku"

 # Configuration options
-app = "appname" # Which app?
+app = "ecbooster" # Which app?
 hours = 24      # how many hours should the error window contain?


@@ -78,7 +78,7 @@
     end
 end

-puts "#{total} #{app} errors"
+puts "#{total} errs"
 puts "---"
 puts "In the last #{hours} hours"
 puts copy

複数の Heroku App を確認したい時は、コピーを作ってプラグインフォルダに置けばよいでしょう。

他に使っている plugin

  • Emacs Package Updates
    • 拙作の Emacs のパッケージ更新が分かる plugin です。無茶してます
  • GitHub status
    • GitHub の異常にすぐ気づける plugin です。https://status.github.com/ と同じ内容を API で取得しています

まとめ

BitBar の Heroku plugin を紹介しました。Heroku のエラーに緩く気づける点が気に入りました。Heroku Error Codes への関心も高まりました。

明日の heroku Advent Calendar 2018 の当番は @matsuoshi さんです。どんな内容でしょうかね?