Created
March 10, 2020 00:23
-
-
Save chrishough/5b037ac0c9bf690b41204b9d19b06fcc to your computer and use it in GitHub Desktop.
Example Guardfile for Ruby on Rails Applications with the front end inside of Rails
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
clearing :on | |
directories %w(app lib config spec) \ | |
.select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")} | |
group :cops do | |
guard 'rake', task: 'myapp:test:rubocop' do | |
watch(%r{(app|lib|spec)/(.+)\.(rb|rake)$}) | |
watch(%r{config/(application|routes).rb}) | |
end | |
end | |
group :testing do | |
guard :rspec, cmd: 'bin/rspec' do | |
require 'guard/rspec/dsl' | |
dsl = Guard::RSpec::Dsl.new(self) | |
# 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 | |
# Monitor Factories | |
watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/models' } | |
# 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 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment