Login  Register

How to find out why asciidoctor-bibtex dies?

Posted by wolandscat on Dec 06, 2019; 12:02pm
URL: https://discuss.asciidoctor.org/How-to-find-out-why-asciidoctor-bibtex-dies-tp7396.html

I have installed and run asciidoctor-bibtext. It works on some of our files, but on some it fails. With trace on, I get this:

/usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:205:in `block in build_citation_text': asciidoctor: FAILED: /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/master.adoc: Failed to load AsciiDoc document - undefined method `ref' for #<AsciidoctorBibtex::CitationItem:0x00000006028fb918> (NoMethodError)
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:193:in `build_citation_text'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:114:in `block in replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb:113:in `replace_citation_macros'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:120:in `block (2 levels) in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `each_with_index'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:119:in `block in process'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `each'
        from /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/extensions.rb:110:in `process'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `[]'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:556:in `block in parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:555:in `parse'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/load.rb:83:in `load'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:78:in `convert'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `block in convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `open'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:183:in `convert_file'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:128:in `block in invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `each'
        from /usr/local/gems/asciidoctor-2.0.10/lib/asciidoctor/cli/invoker.rb:111:in `invoke!'
        from /usr/local/gems/asciidoctor-2.0.10/bin/asciidoctor:15:in `<top (required)>'
        from /home/Thomas/bin/asciidoctor:23:in `load'
        from /home/Thomas/bin/asciidoctor:23:in `<main>'
generated /cygdrive/c/dev/openEHR-specifications/specifications-RM/docs/ehr/../ehr.html

I tracked that error to this bit of code in the file /usr/local/gems/asciidoctor-bibtex-0.6.0/lib/asciidoctor-bibtex/processor.rb

          # if found, insert reference information
          if @biblio[cite.key].nil?
            if @throw_on_unknown
              raise "Unknown reference: #{cite.ref}"  #### FAILS HERE
            else
              puts "Unknown reference: #{cite.ref}"   #### OR HERE
              cite_text = cite.ref.to_s
            end
          else
            cite_text = citation_text(macro, cite)
           end

I can't find out what reference or citation the program is failing on, because `.ref` is possibly being called on a void reference, or else the method 'ref' really doesn't exist i.e. the program has an actual bug. I am not a Ruby person so don't know how to get further with this.

So I can't find out if my cite:[] macro is wrong, or if something is broken in my .bib file. I have suspicions about problems with underscores in cite keys in the .bib file, or maybe there is another error there. What tools do people use to validate a .bib file?

Stuck for now...

Any help appreciated.