diff options
Diffstat (limited to 'Guardfile')
| -rw-r--r-- | Guardfile | 83 | 
1 files changed, 65 insertions, 18 deletions
| @@ -1,30 +1,77 @@ +# A sample Guardfile +# More info at https://github.com/guard/guard#readme + +## Uncomment and set this to only include directories you want to watch +# directories %w(app lib config test spec feature) + +## Uncomment to clear the screen before every task +# clearing :on + +## Guard internally checks for changes in the Guardfile and exits. +## If you want Guard to automatically start up again, run guard in a +## shell loop, e.g.: +## +##  $ while bundle exec guard; do echo "Restarting Guard..."; done +## +## Note: if you are using the `directories` clause above and you are not +## watching the project directory ('.'), the you will want to move the Guardfile +## to a watched dir and symlink it back, e.g. +# +#  $ mkdir config +#  $ mv Guardfile config/ +#  $ ln -s config/Guardfile . +# +# and, you'll have to watch "config/Guardfile" instead of "Guardfile" +  # Note: The cmd option is now required due to the increasing number of ways  #       rspec may be run, below are examples of the most common uses.  #  * bundler: 'bundle exec rspec'  #  * bundler binstubs: 'bin/rspec' -#  * spring: 'bin/rsspec' (This will use spring if running and you have +#  * spring: 'bin/rspec' (This will use spring if running and you have  #                          installed the spring binstubs per the docs) -#  * zeus: 'zeus rspec' (requires the server to be started separetly) +#  * zeus: 'zeus rspec' (requires the server to be started separately)  #  * 'just' rspec: 'rspec' -guard :rspec, cmd: 'bundle exec rspec' do -  watch(%r{^spec/.+_spec\.rb$}) -  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" } -  watch('spec/spec_helper.rb')  { "spec" } - -  # Rails example -  watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" } -  watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$})          { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } -  watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] } -  watch(%r{^spec/support/(.+)\.rb$})                  { "spec" } -  watch('config/routes.rb')                           { "spec/routing" } -  watch('app/controllers/application_controller.rb')  { "spec/controllers" } -  watch('spec/rails_helper.rb')                       { "spec" } + +guard :rspec, cmd: "bundle exec 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(%r{^app/views/(.+)/.*\.(erb|haml|slim)$})     { |m| "spec/features/#{m[1]}_spec.rb" } +  watch(rails.view_dirs)     { |m| rspec.spec.("features/#{m[1]}") }    # Turnip features and steps    watch(%r{^spec/acceptance/(.+)\.feature$}) -  watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$})   { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } +  watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| +    Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance" +  end  end - | 
