Sha256: 774ee8460a59d62bd01165c5c2e1738701f3bbf684a8f3780f3c6c533c85231b
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
require 'pry' require 'rake' require 'rspec' require 'json' require 'rspec_api_docs/config' module RspecApiDocs class RakeTask < ::Rake::TaskLib module RSpecMatchers extend RSpec::Matchers end attr_reader :name attr_accessor \ :verbose, :pattern, :rspec_opts, :existing_file, :dir def initialize(name = nil, &block) @name = name || :'docs:ensure_updated' @verbose = true @pattern = 'spec/requests/**/*_spec.rb' @rspec_opts = [] @existing_file = 'docs/index.json' block.call(self) define end private def define desc 'Ensure API docs are up to date' task name do @dir = Dir.mktmpdir rspec_task.run_task(verbose) configure_rspec RSpecMatchers.expect(generated).to RSpecMatchers.eq(existing) remove_dir end end def generated JSON.parse(File.read(Pathname.new(dir) + 'index.json')) end def existing JSON.parse(File.read(existing_file)) end def rspec_task RSpec::Core::RakeTask.new.tap do |task| task.pattern = pattern task.rspec_opts = rspec_opts + [ '--format RspecApiDocs::Formatter', '--order defined', "--require #{spec_helper.path}", ] end end 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 def configure_rspec RSpec.configure do |config| config.color = true end end def remove_dir FileUtils.remove_entry dir end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rspec-api-docs-0.8.0 | lib/rspec_api_docs/rake_task.rb |
rspec-api-docs-0.7.0 | lib/rspec_api_docs/rake_task.rb |