LoginSignup
11
11

More than 5 years have passed since last update.

Ruby | GuardでRSpec/RuboCopを自動実行して結果をGrowlに表示する

Last updated at Posted at 2014-07-18

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 の警告

growl_alert.png

次に、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 を実行します

growl_alert_double.png

参照

http://www.growlforwindows.com/gfw/default.aspx
https://github.com/snaka/ruby_gntp
https://rubygems.org/gems/ruby_gntp

Guard まとめ記事

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11