Ruby | GuardでRSpec/RuboCopを自動実行して結果をGrowlに表示する
概要
GuardでRSpec/RuboCopを自動実行して結果をGrowlに表示する
補足
RSpec: Ruby の BDDツール
RuboCop: Ruby の 静的解析ツール
Growl: ポップアップ通知システム
前提
- Windows7 環境にて試行
- guard gem はインストール済みとします。
- guard-rubocop gem はインストール済みとします。
- guard-rspec gem はインストール済みとします。
- Growl for Windows はインストール済みとします。
gem i ruby_gntp gem のインストール
$ gem install ruby_gntp --no-ri --no-doc
設定ファイル(Guardfile)の生成
RuboCop 対応のひな形を生成します。
$ guard init rubocop
下記のようなテンプレートが生成されます
Guardfile
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard :rubocop do
watch(%r{.+\.rb$})
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end
notification :gntp
guardを起動します
$ guard start
プログラムのひな型を生成します
自作 gem の rspec_piccolo を利用します。
rspec_piccoloはプロダクトコードとテストコードのひな形を生成する CLI ツールです。
詳しくは
https://github.com/tbpgr/rspec_piccolo
を参照。
$ piccolo e Hoge hoge hoge -p
これで、プロダクトコードと、テストコードが生成されます。
中身については略。
自動生成されたファイルを検知して、 guard が実行されます
rspec_piccolo を作成した当初は RuboCop 対応を加味していなかったため、
複数の警告が発生しています。
コンソースの出力内容は略。
以下、 growl の警告
次に、rspec も一緒に実行させてみます。 Guardfile ファイルに rspec の呼び出し設定を追加します。
Guardfile
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard :rubocop do
watch(%r{.+\.rb$})
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end
guard :rspec do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
end
notification :gntp
テストがエラーになるように設定後、ファイルを保存して guard を実行します
参照
http://www.growlforwindows.com/gfw/default.aspx
https://github.com/snaka/ruby_gntp
https://rubygems.org/gems/ruby_gntp
Guard まとめ記事