RubyでGrowlに通知を出してみる
移転しました →
Growl、有料になっちゃったけど使ってます。guardで監視してrspec動かしたり、重いコマンドが終わったら通知させたり。
実行時間の長いコマンドの終了をGrowlやメール通知するRubyスクリプト - 株式会社CFlatの明後日スタイルのブログ
とある用途で、いくつかの候補からランダムで選択した文字列を定期的に出したいなーと思ったのでRubyで書いてみました。
Growlが入っていることが前提です。また、定期的にスクリプトを起動するのはlaunchctl
を使うのが定番らしいのでそれでやりますが、ここでは割愛。
growlnotifyを使う場合
コマンドラインからGrowlに通知を投げるコマンドで、上のURLからダウンロードできます。コマンド終了通知にはこれを使ってます。
$ growlnotify -n 'Terminal' -t 'bash' -m 'hogehoge' # -n アプリケーション名 # -t タイトル # -m 表示メッセージ
これを利用すれば簡単に実現できます。
texts = [ "hogehogehogehoge", "fugafugafugafuga", "piyopiyopiyopiyo" ] system "growlnotify -n 'MyApp' -t 'Notification' -m '#{texts.sample}'"
gemを使う場合
Growl連携用のgemがあります。それはruby-growl
。
growlnotify
コマンドと同じぐらいシンプルに使えます。
require "ruby-growl" texts = [ "hogehogehogehoge", "fugafugafugafuga", "piyopiyopiyopiyo" ] growl = Growl.new "localhost", "MyApp" growl.add_notification( "notification_name", "hoghoge" ) growl.notify "notification_name", "Notification", "#{texts.sample}"