class RspecApiDocs::RakeTask

Attributes

dir[RW]
existing_file[RW]
pattern[RW]
rspec_opts[RW]
verbose[RW]
verify[RW]

Public Class Methods

new(name = nil, &block) click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 20
def initialize(name = nil, &block)
  @name = name
  @verbose = true
  @pattern = 'spec/requests/**/*_spec.rb'
  @rspec_opts = []
  @existing_file = 'docs/index.json'
  @verify = false

  block.call(self) if block

  define
end

Private Instance Methods

configure_rspec() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 72
def configure_rspec
  RSpec.configure do |config|
    config.color = true
  end
end
default_desc() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 104
def default_desc
  verify ? 'Ensure API docs are up to date' : 'Generate API docs'
end
define() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 35
def define
  desc default_desc
  task name do
    @dir = Dir.mktmpdir if verify

    rspec_task.run_task(verbose)

    verify! if verify
  end
end
existing() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 50
def existing
  JSON.parse(File.read(existing_file))
end
generated() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 46
def generated
  JSON.parse(File.read(Pathname.new(dir) + 'index.json'))
end
name() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 99
def name
  @name ||
    verify ? :'docs:ensure_updated' : :'docs:generate'
end
remove_dir() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 78
def remove_dir
  FileUtils.remove_entry dir
end
rspec_task() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 54
def rspec_task
  RSpec::Core::RakeTask.new.tap do |task|
    task.pattern = pattern
    task.rspec_opts = task_rspec_opts
  end
end
spec_helper() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 61
    def spec_helper
      tempfile = Tempfile.new(['shoebox', '.rb'])
      tempfile.write <<-EOF
        RspecApiDocs.configure do |config|
          config.output_dir = '#{dir}'
        end
      EOF
      tempfile.close
      tempfile
    end
task_rspec_opts() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 90
def task_rspec_opts
  arr = rspec_opts + [
    '--format RspecApiDocs::Formatter',
    '--order defined',
  ]
  arr += ["--require #{spec_helper.path}"] if verify
  arr
end
verify!() click to toggle source
# File lib/rspec_api_docs/rake_task.rb, line 82
def verify!
  configure_rspec

  RSpecMatchers.expect(generated).to RSpecMatchers.eq(existing)

  remove_dir
end