Class: RailsAutodoc::Generator
- Inherits:
-
Object
- Object
- RailsAutodoc::Generator
- Defined in:
- lib/rails_autodoc/generator.rb
Instance Method Summary collapse
- #generate ⇒ Object
- #generate! ⇒ Object
-
#initialize(config: RailsAutodoc.config) ⇒ Generator
constructor
A new instance of Generator.
- #to_json(*_args) ⇒ Object
- #verify! ⇒ Object
- #write_spec(spec) ⇒ Object
Constructor Details
#initialize(config: RailsAutodoc.config) ⇒ Generator
Returns a new instance of Generator.
8 9 10 |
# File 'lib/rails_autodoc/generator.rb', line 8 def initialize(config: RailsAutodoc.config) @config = config end |
Instance Method Details
#generate ⇒ Object
12 13 14 15 |
# File 'lib/rails_autodoc/generator.rb', line 12 def generate operations = RouteInspector.new(config: @config).operations OpenapiSpecBuilder.new(operations: operations, config: @config).build end |
#generate! ⇒ Object
17 18 19 20 21 |
# File 'lib/rails_autodoc/generator.rb', line 17 def generate! spec = generate write_spec(spec) spec end |
#to_json(*_args) ⇒ Object
30 31 32 |
# File 'lib/rails_autodoc/generator.rb', line 30 def to_json(*_args) JSON.pretty_generate(generate) end |
#verify! ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/rails_autodoc/generator.rb', line 34 def verify! output_path = @config.resolved_output_path current = output_path.exist? ? YAML.safe_load(output_path.read, permitted_classes: [Date, Time]) : {} fresh = generate unless normalize_spec(current) == normalize_spec(fresh) raise SpecDriftError, "OpenAPI spec drift detected at #{output_path}. Run `rake autodoc:generate`." end true end |
#write_spec(spec) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/rails_autodoc/generator.rb', line 23 def write_spec(spec) output_path = @config.resolved_output_path output_path.dirname.mkpath output_path.write(YAML.dump(spec)) spec end |