早速Growlとautotestを連携させてみようと思ったのですが、
growlnotify-1.1.4でメッセージを出そうとすると、

pre>>
% growlnotify -m "test"
2008-09-15 09:13:20.929 growlnotify[901:10b] could not find local GrowlApplicationBridgePathway, falling back to NSDNC
<<--

こんな感じのWARNINGが出てきます。
メッセージ自体はきちんと表示されるので、実用上問題ないのですが、
毎回警告が出てくるのはちょっと気になるので、
警告が出ない方法が無いかいくつか試してみた所、
以下のようにホストを指定すると大丈夫なようでした。

pre>>
% growlnotify -m "test" -H localhost
<<--

ということで、autotestと連携させるために、
以下のような.autotestファイルを作成しました。

ruby>>
class Autotest
module Growl
IMG_OK = '/Developer/Examples/Carbon/Dial/English.lproj/' +
'rotate_knob_select.tiff'
IMG_NG = "/Applications/Mail.app/Contents/Resources/Caution.tiff"
class << self
def growl(title, msg, img = nil, pri = 0, sticky = "")
img ||= IMG_NG
msg += " at #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
system "growlnotify -n autotest #{title} -m #{msg.inspect}" +
" -H localhost --image #{img} -p #{pri} #{sticky}"
end
end

Autotest.add_hook :run_command do |at|
  growl "autotest running", "Started", IMG_OK
end

Autotest.add_hook :ran_command do |at|
  result = [at.results].flatten.join("\n")
  examples = result.slice(/(\d+)\s+examples?/).to_i
  tests = result.slice(/(\d+)\s+tests?/).to_i
  failures = result.slice(/(\d+)\s+failures?/).to_i
  errors = result.slice(/(\d+)\s+failures?/).to_i
  if failures + errors > 0
    growl "Tests Failed",
      "#{failures} failures #{errors} errors", IMG_NG, 2#, "-s"
  else
    growl "Tests Passed", "#{tests + examples} tests", IMG_OK
  end
end

end
end
<<--

最初はrequire 'autotest/growl'をしてモンキーパッチを当てていたのですが、
結局ほとんど書きかえてしまったのでこうなりました。

エラーが発生した場所や、エラーメッセージなんかも表示できるようになるともっと便利になるかもしれないですね。

posted by genki genki on Mon 15 Sep 2008 at 07:40 with 2 comments
瀧内元気 瀧内元気 09/16 07:59
**補足**

-H で接続するようにする場合は、以下のように、Growlの設定画面で

![growl-conf](http://img.skitch.com/20080915-qqfb9w7s1jc2pw8fa5nx2wft4i.jpg)

「受信される通知を聞く」をチェックしておく必要があるようです。
maiha maiha 03/11 16:09
それでもセグブる → osx再起動 → 治った♪

ありがとう!!
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Tags
coffeescriptdefergroongajsmemonodenodejs
Comments rssrss
瀧内元気 瀧内元気: MacOS版は以下にあります genki/ViMouse 01/16 05:40
dsjf dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これでも出... 01/08 23:23
瀧内元気 瀧内元気: おお、チェックしてみます。thx! 12/24 05:23
overisland overisland: Reeder for iPhone もこの UI を実装していますね。 12/24 05:13
瀧内元気 瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 http:... 12/01 12:20
tkawa tkawa: http://devcenter.heroku.com/articles/rails31_herok... 12/01 10:47
瀧内元気 瀧内元気: どもー。いまはgithubに置いてあります https://github.com/genki/irb... 07/10 08:31
ともち ともち: こんにちは! すばらしいプログラムをありがとうございます。しかし、merbiのドメイン、切れているみ... 07/10 02:30
Services from s21g
YOMU Web小説リーダー
Web小説を音声で楽しむ読み上げリーダー
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン