Growl for Windows で本当はやりたかったけど、WebKit 系ポップアップが正しく表示されない(エラーが出る)ので、snarl に変更した際の備忘録。
参考) gan2 の Ruby 勉強日記
- snarl
- rspec
- rspec-rails
autotest- win32console
- ZenTest
- diff-lcs
- ruby-snarl
- redgreen
は事前にインストールしておくこと。snarl以外はすべて gems でインストール可能。
.autotestのコードを以下のように。※ ファイルの作成方法は参考サイトを見てね。
# ruby -w
require 'rubygems'
require 'autotest/redgreen'
require 'autotest/snarl'
require 'win32/console/ansi'
Autotest::HOOKS.delete(:interrupt)
module Autotest::Snarl
def self.icon
{
:green => 'rails_ok.png',
:red => 'rails_fail.png',
:pending => 'rails_pending.png'
}
end
def self.snarl title, msg, img=nil
Snarl.show_message(title, msg, icon[img])
end
Autotest.add_hook :ran_command do |at|
results = [at.results].flatten.join("\n")
output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)
if output =~ /[1-9]\sfailures?/
snarl "FAIL:", "#{output}", :red
elsif output =~ /[1-9]\spending?/
snarl "PENDING:", "#{output}", :pending
else
snarl "PASS:", "#{output}", :green
end
end
end
class Autotest
def self.clear_hook
HOOKS[:red].clear
HOOKS[:green].clear
HOOKS[:pending].clear
HOOKS[:all_good].clear
end
end
#Autotest.clear_hook
参考サイトと違う点(と、いうか色んなサイトを合わせた)を列挙すると、
require 'rubygems'
require 'win32/console/ansi'
Autotest::HOOKS.delete(:interrupt)
snarl "PENDING:", "#{output}", :pending
#Autotest.clear_hook
1.rubygemsでインストールしたので、gems宣言を追加。
2.win32consoleを追加しないと、Snarlに通知されなかった。
3.autotestがCTRL+C*2で停止しないため追加
4.pendingも表示(まだ試してないけど。。。)したかったので追加
5.CTRL+C*2で停止しないためコメント化
で、コマンドプロンプトで autotest を実行すれば
Snarl に通知が無事いきました。
後は、
- rspec-rails と rspec プラグインの違い
- ZenTest の設定
が分かり次第、エントリ登録しようと思う。
1 件のコメント:
判ったことを、
・ZenTest
Rubyのテストツール一式のこと。よって設定はautotestのみでとりあえず完了。が、どこかでソースからテストの雛形を作るみたいな記事をみたことが?
・rspec-rails
どうも、昔のplug-in版がgems化されたっぽい。インストールはgemsのみでOK。
・drb
dRuby の略。SOAPとかと同じと解釈(あってる?)
コメントを投稿