Module: RailsContractSync

Defined in:
lib/rails_contract_sync.rb,
lib/rails_contract_sync/merger.rb,
lib/rails_contract_sync/builder.rb,
lib/rails_contract_sync/railtie.rb,
lib/rails_contract_sync/version.rb,
lib/rails_contract_sync/configuration.rb,
lib/rails_contract_sync/schema_inferrer.rb,
lib/rails_contract_sync/openapi_document.rb,
lib/rails_contract_sync/runtime/middleware.rb,
lib/rails_contract_sync/runtime/route_resolver.rb,
lib/rails_contract_sync/static/route_extractor.rb,
lib/rails_contract_sync/static/params_extractor.rb,
lib/rails_contract_sync/runtime/observation_store.rb

Defined Under Namespace

Modules: Merger, Runtime, SchemaInferrer, Static Classes: Builder, Configuration, OpenAPIDocument, Railtie

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.build(route_set:, controller_sources:, observation_store:, output_path:, prune: false) ⇒ Object



78
79
80
# File 'lib/rails_contract_sync/builder.rb', line 78

def build(route_set:, controller_sources:, observation_store:, output_path:, prune: false)
  write_merged(route_set: route_set, controller_sources: controller_sources, observations: observation_store.all, output_path: output_path, prune: prune)
end

.configurationObject



22
23
24
# File 'lib/rails_contract_sync/configuration.rb', line 22

def configuration
  @configuration ||= Configuration.new
end

.generate(route_set:, controller_sources:, output_path:, prune: false) ⇒ Object



74
75
76
# File 'lib/rails_contract_sync/builder.rb', line 74

def generate(route_set:, controller_sources:, output_path:, prune: false)
  write_merged(route_set: route_set, controller_sources: controller_sources, observations: [], output_path: output_path, prune: prune)
end

.write_merged(route_set:, controller_sources:, observations:, output_path:, prune:) ⇒ Object



82
83
84
85
86
87
88
89
# File 'lib/rails_contract_sync/builder.rb', line 82

def write_merged(route_set:, controller_sources:, observations:, output_path:, prune:)
  fresh = Builder.new(route_set: route_set, controller_sources: controller_sources, observations: observations).build_fresh
  existing = File.exist?(output_path) ? OpenAPIDocument.load_file(output_path) : nil
  merged = Merger.merge(existing, fresh, prune: prune)
  FileUtils.mkdir_p(File.dirname(File.expand_path(output_path)))
  merged.write(output_path)
  merged
end