asciidoctor / asciidoctor-diagram

:left_right_arrow: Asciidoctor diagram extension, with support for AsciiToSVG, BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag), Ditaa, Erd, GraphViz, Mermaid, Msc, PlantUML, Shaape, SvgBob, Syntrax, UMLet, Vega, Vega-Lite and WaveDrom.
http://asciidoctor.org
MIT License
432 stars 106 forks source link

NoMethodError rendering Structurizr diagram #415

Closed timw closed 1 year ago

timw commented 1 year ago

Attempting to render a Structurizr diagram produces the following error:

% asciidoctor -r asciidoctor-diagram struct_test.adoc --trace
/Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/substitutors.rb:214:in `sub_attributes': asciidoctor: FAILED: /Users/timw/projects/indexity/empi/indexing/backend/dev/doc/struct_test.adoc: Failed to load AsciiDoc document - undefined method `gsub' for #<Asciidoctor::Reader:0x00000001168b02d8> (NoMethodError)
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:384:in `apply_target_subs'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:394:in `create_source'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:71:in `process'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/structurizr/extension.rb:25:in `process'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:1056:in `[]'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:1056:in `build_block'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:907:in `next_block'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:397:in `next_section'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:97:in `parse'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/document.rb:538:in `parse'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/load.rb:84:in `load'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:78:in `convert'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `block in convert_file'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `open'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `convert_file'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:129:in `block in invoke!'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:112:in `each'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:112:in `invoke!'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/bin/asciidoctor:15:in `<top (required)>'
    from /opt/homebrew/Cellar/asciidoctor/2.0.18/libexec/bin/asciidoctor:23:in `load'
    from /opt/homebrew/Cellar/asciidoctor/2.0.18/libexec/bin/asciidoctor:23:in `<main>'
/Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/substitutors.rb:214:in `sub_attributes': undefined method `gsub' for #<Asciidoctor::Reader:0x00000001168b02d8> (NoMethodError)
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:384:in `apply_target_subs'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:394:in `create_source'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/diagram_processor.rb:71:in `process'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.2.8/lib/asciidoctor-diagram/structurizr/extension.rb:25:in `process'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:1056:in `[]'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:1056:in `build_block'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:907:in `next_block'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:397:in `next_section'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/parser.rb:97:in `parse'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/document.rb:538:in `parse'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/load.rb:84:in `load'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:78:in `convert'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `block in convert_file'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `open'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/convert.rb:190:in `convert_file'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:129:in `block in invoke!'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:112:in `each'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/lib/asciidoctor/cli/invoker.rb:112:in `invoke!'
    from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.20/bin/asciidoctor:15:in `<top (required)>'
    from /opt/homebrew/Cellar/asciidoctor/2.0.18/libexec/bin/asciidoctor:23:in `load'
    from /opt/homebrew/Cellar/asciidoctor/2.0.18/libexec/bin/asciidoctor:23:in `<main>'

Asciidoc reproducer:

= Strucurizr Test

[structurizr]
----
workspace {
}
----
pepijnve commented 1 year ago

Fixed in https://github.com/asciidoctor/asciidoctor-diagram/releases/tag/v2.2.9

timw commented 1 year ago

Confirmed this fixes execution from the CLI in 2.2.9. Thanks @pepijnve!