Growl、有料になっちゃったけど使ってます。guardで監視してrspec動かしたり、重いコマンドが終わったら通知させたり。

実行時間の長いコマンドの終了をGrowlやメール通知するRubyスクリプト - 株式会社CFlatの明後日スタイルのブログ

とある用途で、いくつかの候補からランダムで選択した文字列を定期的に出したいなーと思ったのでRubyで書いてみました。

Growlが入っていることが前提です。また、定期的にスクリプトを起動するのはlaunchctlを使うのが定番らしいのでそれでやりますが、ここでは割愛。

growlnotifyを使う場合

Growl - Downloads

コマンドラインからGrowlに通知を投げるコマンドで、上のURLからダウンロードできます。コマンド終了通知にはこれを使ってます。

1$ growlnotify -n 'Terminal' -t 'bash' -m 'hogehoge' 
2
3# -n アプリケーション名
4# -t タイトル
5# -m 表示メッセージ

これを利用すれば簡単に実現できます。

1texts = [
2  "hogehogehogehoge",
3  "fugafugafugafuga",
4  "piyopiyopiyopiyo"
5]
6
7system "growlnotify -n 'MyApp' -t 'Notification' -m '#{texts.sample}'" 

gemを使う場合

Growl連携用のgemがあります。それはruby-growl

growlnotify コマンドと同じぐらいシンプルに使えます。

 1require "ruby-growl"
 2
 3texts = [
 4  "hogehogehogehoge",
 5  "fugafugafugafuga",
 6  "piyopiyopiyopiyo"
 7]
 8
 9growl = Growl.new "localhost", "MyApp"
10growl.add_notification(
11  "notification_name", "hoghoge"
12)
13growl.notify "notification_name", "Notification", "#{texts.sample}"