Skip to content

Instantly share code, notes, and snippets.

@pollcaz
Created July 25, 2016 19:43
Show Gist options
  • Save pollcaz/7eb0ee48cdd2de5e8429ccde3f57c7da to your computer and use it in GitHub Desktop.
Save pollcaz/7eb0ee48cdd2de5e8429ccde3f57c7da to your computer and use it in GitHub Desktop.
directories %w[app config lib spec frontend/app]
# This group allows to skip running RuboCop when RSpec failed.
# https://github.com/yujinakayama/guard-rubocop
group :red_green_refactor, halt_on_fail: true do
guard :rspec, cmd: "spring rspec" do
require "guard/rspec/dsl"
dsl = Guard::RSpec::Dsl.new(self)
# Feel free to open issues for suggestions and improvements
# RSpec files
rspec = dsl.rspec
watch(rspec.spec_helper) { rspec.spec_dir }
watch(rspec.spec_support) { rspec.spec_dir }
watch(rspec.spec_files)
# Ruby files
ruby = dsl.ruby
dsl.watch_spec_files_for(ruby.lib_files)
# Rails files
rails = dsl.rails(view_extensions: %w(erb haml slim))
dsl.watch_spec_files_for(rails.app_files)
dsl.watch_spec_files_for(rails.views)
watch(rails.controllers) do |m|
[
rspec.spec.("routing/#{m[1]}_routing"),
rspec.spec.("controllers/#{m[1]}_controller"),
rspec.spec.("acceptance/#{m[1]}")
]
end
# Rails config changes
watch(rails.spec_helper) { rspec.spec_dir }
watch(rails.routes) { "#{rspec.spec_dir}/routing" }
watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
# Capybara features specs
watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
end
end
guard :rubocop, all_on_start: false do
watch(%r{.+\.rb$})
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
end
end
guard 'livereload' do
watch %r{frontend/app/\w+/.+\.(js|hbs|html|css|)}
end
@pollcaz
Copy link
Author

pollcaz commented Jul 25, 2016

Guardfile is localized in the project root(guard gem whith rubocop gem) this setup allow us to first run the test and is if there were no errors then it runs to mark all violated cops

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment