LoginSignup
48
45

More than 5 years have passed since last update.

RubyMineでファイルを保存した際に自動的にrubocopが走って通知センタに通知するための方法

Last updated at Posted at 2014-03-28

あらまし:

  • 背景:ソースコードに変更を加えた際に文法チェックを忘れがち
  • 目的:ソースに変更を加えた際に文法チェック漏れがないようにしたい
  • ゴール:RubyMineでソースコードに変更を加えたら自動的に文法チェックが走るようにする。流すだけでチェック忘れを防ぐために結果をMacの通知センタで通知する

材料

  • RubyMine(IDE)
  • rubocop(RubyのSyntax Checker)
  • guard(ファイル変更の自動検出)
  • guard-rubocop(guard + rubocopの連携)
  • terminal-notifier-guard(通知センタでguardの結果を通知)

手順

1. "Save files on frame deactivation"の有効化

  • RubyMine上で ⌘, or RubyMine => Preferences
  • 検索窓に"save"を打ち込む
  • Generalをクリックして"Save files on frame deactivation"が有効になっていることを確認する
  • 無効になっている場合は"Save files on frame deactivation"にチェックを入れて有効化をする

2. rubocopとguardの導入

  • Gemfileに記載してbundleからインストール
Gemfile
group :development do
  gem 'rubocop'
  gem 'guard'
  gem 'guard-rubocop'
  gem 'terminal-notifier-guard'
end
% bundle install --path vendor/bundle

3. Edit ConfigurationsにGuardの実行設定を追加

  • Run => Edit Configurations...
  • "+"を押して"IRB Console"を選択
  • Nameに"Guard"(任意)を設定
  • IRB scriptにguardへのパスを設定。パスはターミナル上からbundle exec which guardで表示されるのでそれを使う
% bundle exec which guard
/Users/Mahito/repos/sample/vendor/bundle/ruby/2.0.0/bin/guard
  • Working Directoryに自分の作業ディレクトリのパスを設定
  • Bundlerタブの"Run the script in context of the bundle"にチェックを入れて有効にする

4.Guardの初期設定

  • guardの利用のために必要なGuardfileを作成するためにターミナル上からguard initを実行
% bundle exec guard init
  • 作成されたGuardfileに対して設定を追加
  • notification: を設定しないとrubocopが失敗した際にのみ通知される。また、falseにするとすべて通知されなくなる
Guardfile
interactor :simple

guard :rubocop, notification: true do
  watch(%r{.+\.rb$})
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end
  • デフォルトだと*.rbのファイルと.rubocop.ymlが対象なので、.rakeなどを追加する場合は以下参照
Guardfile
guard :rubocop, notification: true do
  watch(%r{.+\.rb$})
  watch(%r{.+\.rake$}) # 追記
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end

5.Guardの実行

  • RubyMine上から Run => Run 'Guard'
  • 以降は対象ファイルが変更されるたびにrubocopが走る
  • 走った結果が通知センタで通知されて幸せ

結論

  • guard-rubocop便利!

参考

48
45
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
48
45