とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

autospec + Growl

autotestがうまく動かないのでソースコード読もうとしたら、同一フォルダ内にautospecなるもの発見。
ぐぐったらこっちでRSpecが動くらしい。
今までの苦労はなんだったんだ・・・


とりあえず、あとでまとめを書こう。
インストールするもの。


GrowlとGrowlnotifyはGrowlをDLしてきてインストール。


RSpec, ZenTest, RedGreen, ruby-growl

$sudo gem install rspec
$sudo gem install ZenTest
$sudo gem install RedGreen
$sudo gem install redgreen
$sudo gem install ruby-growl
$gem search redgreen

*** REMOTE GEMS ***

redgreen (1.2.2)
RedGreen (1.0)

RedGreenとredgreenがあるから両方入れてみた。


ホームディレクトリに.autotestを作る。

cp /opt/local/lib/ruby/gems/1.8/gems/ZenTest-3.11.0/example_dot_autotest.rb ~/.autotest

もってきた.autotestを編集。

require 'autotest/redgreen' #コメントを外す

#以下追加
module Autotest::Growl
        def self.growl title, msg, img="~/.rails_ok.png", pri=0, sticky=""
                msg += " at #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
          system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}"
        end

        Autotest.add_hook :ran_command do |at|
                results = [at.results].flatten.join("\n")
                output = results.slice(/\d+\s+examples?,\s*(\d+)\s+failures?/)
                if output
                        if $~[1].to_i > 0
                                growl "Tests Failed", "#{output}", "~/.rails_fail.png", 2, "-s"
                        else
                                growl "Tests Passed", "#{output}", "~/.rails_ok.png", -2
                        end
                else
                        growl "Tests Errored", "errors", "~/.rails_fail.png", 2, "-s"
                end
        end
end

画像はどっかから持ってきたけど、どこかだったか忘れたので探してください。


あとは、自動的にspecをしたいフォルダでautospecを起動

$ autospec

これでlibとspecフォルダの中身を見て変更があったら自動でspecをしてくれるらしい。
ちなみに、specファイルには

require 'rubygems'$
require 'spec'$

を入れておかないとエラーが出るので注意。


参考サイト
http://d.hatena.ne.jp/gan2/20080413/1208081539
http://niku.name/20081123.html
http://iket.tumblr.com/post/57288486/autospec
http://d.hatena.ne.jp/zariganitosh/20080312/1205305079