Automation test with Guard and Rubymine integration.
You may already know about `rspec` and `rubocop`, a testing tool and a checking tool (for ruby coding styles). They are not realted to be referred here in a same post but we’re using them these days in our company projects though. And actually we’re going to play with automation tests using `guard` and its plugins today, which are `guard-rspec` and `guard-rubocop`.
Rubocop and RSpec
For you who haven’t heard about `rubocop` and `rspec` have a look here:
- https://github.com/bbatsov/rubocop
- https://github.com/rspec/rspec-rails
- http://rspec.info/
Automation
`guard` helps us having things rerun automatically when new changes get saved. `guard-rspec` gets a spec re-run when you change and save it, `rubocop` gets fired by `guard-rubocorp` immediately after any of your files got saved (of course only the ones in the rubocop.yml configuration list), specs get run by `guard-rspec` when any of your spec gets changed and saved.
Note: One interesting thing is `guard-rspec` re-runs only the spec recently changed, not the whole spec directory.
Firstly make sure you have `guard` gem installed. Then add `guard-rspec` and `guard-rubocop` to the Gemfile:
group :development do gem 'guard-rspec', require: false gem 'guard-rubocop' end
Secondly let’s generate the `Guardfile` which contains the configurations.
guard init
or by
guard init rubocop guard init rspec
Lastly, open another console and type in `guard`
gnguyen@gnguyen-ubuntu ~/work/bookstore (master)*$ guard
We now have specs and files automatically rerun/re-checked whenever new changes get saved 🙂
RubyMine integration
Once we have both Guard running and Rubymine installed, we can make them work together seamlessly with just a few more steps.
Step 1: Enable “Save files on frame deactivation”
Open the project directory with Rubymine
, go to File > Settings
then type save
in the Search box, make sure the checkbox for Save files on frame deactivation
is checked.
Step 2: Add Guard configuration
- Go to
Run > Edit
Configuration - Add new
IRB concolse
by clicking the+
sign - Name the new IRB console as ‘guard’ (or whatever you like)
- Set the Guard path in the IRB script field. We can retrieve this path by opening a new Terminal, navigate to the project directory and type
which guard
gnguyen@ubuntu ~/my_project$ which guard /home/gnguyen/.rvm/gems/ruby-2.0.0-p195@my_project/bin/guard
That’s it, go to Run > Run "guard"
and see rubocop
and rspec
run when we save new changes.
Have fun.