class Guard::RSpec::Dsl

Public Class Methods

detect_spec_file_for(rspec, file) click to toggle source
# File lib/guard/rspec/dsl.rb, line 16
def self.detect_spec_file_for(rspec, file)
  # TODO: when spec not found ... run specs in topmost found path?
  # Or show warning?

  path = "#{rspec.spec_dir}/#{file}_spec.rb"
  return path unless file.start_with?("lib/")
  return path if Dir.exist?("#{rspec.spec_dir}/lib")

  without_lib = file.sub(%r{^lib/}, "")
  "#{rspec.spec_dir}/#{without_lib}_spec.rb"
end
new(dsl) click to toggle source
# File lib/guard/rspec/dsl.rb, line 8
def initialize(dsl)
  @dsl = dsl
end

Public Instance Methods

rails(options = {}) click to toggle source
# File lib/guard/rspec/dsl.rb, line 45
def rails(options = {})
  # Rails example
  @rails ||= _build_rails_rules(_view_extensions(options) * "|")
end
rspec() click to toggle source
# File lib/guard/rspec/dsl.rb, line 28
def rspec
  @rspec ||= OpenStruct.new(to_s: "spec").tap do |rspec|
    rspec.spec_dir = "spec"
    rspec.spec = ->(m) { Dsl.detect_spec_file_for(rspec, m) }
    rspec.spec_helper = "#{rspec.spec_dir}/spec_helper.rb"
    rspec.spec_files = %r{^#{rspec.spec_dir}/.+_spec\.rb$}
    rspec.spec_support = %r{^#{rspec.spec_dir}/support/(.+)\.rb$}
  end
end
ruby() click to toggle source
# File lib/guard/rspec/dsl.rb, line 38
def ruby
  # Ruby apps
  @ruby ||= OpenStruct.new.tap do |ruby|
    ruby.lib_files = %r{^(lib/.+)\.rb$}
  end
end
watch_spec_files_for(expr) click to toggle source
# File lib/guard/rspec/dsl.rb, line 12
def watch_spec_files_for(expr)
  @dsl.send(:watch, expr) { |m| rspec.spec.call(m[1]) }
end

Private Instance Methods

_build_rails_rules(exts) click to toggle source
# File lib/guard/rspec/dsl.rb, line 56
def _build_rails_rules(exts)
  OpenStruct.new.tap do |rails|
    rails.app_files = %r{^app/(.+)\.rb$}

    rails.views = %r{^app/(views/.+/[^/]*\.(?:#{exts}))$}
    rails.view_dirs = %r{^app/views/(.+)/[^/]*\.(?:#{exts})$}
    rails.layouts = %r{^app/layouts/(.+)/[^/]*\.(?:#{exts})$}

    rails.controllers = %r{^app/controllers/(.+)_controller\.rb$}
    rails.routes = "config/routes.rb"
    rails.app_controller = "app/controllers/application_controller.rb"
    rails.spec_helper = "#{rspec.spec_dir}/rails_helper.rb"
  end
end
_view_extensions(options) click to toggle source
# File lib/guard/rspec/dsl.rb, line 52
def _view_extensions(options)
  options.dup.delete(:view_extensions) || %w(erb haml slim)
end