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.

Revisions

  1. paulo andres carmona created this gist Jul 25, 2016.
    60 changes: 60 additions & 0 deletions Guardfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,60 @@
    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