runemadsen / Magic-Book-Project

DEPRECATED: We are reviving the Magic Book project as a node package: https://github.com/magicbookproject/magicbook
http://itp.nyu.edu
620 stars 62 forks source link

asciidoc::ascii_element#parse_metadata gets a nil xml element when reading an .asc file #158

Closed candeira closed 11 years ago

candeira commented 11 years ago

Preliminaries and configuration:

At first I thought this would be an installation bug rather than a code bug, so I checked the configuration.

and everything else seems to be in its place.

After installing the Magic Book Project according to the modified instructions in my own pull request https://github.com/runemadsen/Magic-Book-Project/pull/156, this is the error I get:

NoMethodError at /create_html/home/kandinski/data/work/hack/The-Nature-of-Code/raw/book.asc

undefined method `name' for nil:NilClass

file: ascii_element.rb
location: parse_metadata
line: 14

URL I was accessing:

http://127.0.0.1:9393/create_html/home/kandinski/data/work/hack/The-Nature-of-Code/raw/book.asc

Full error by Sinatra show_exceptions:

BACKTRACE

/home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_element.rb in parse_metadata
    @type = xml.name.to_sym
/home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_element.rb in initialize
    parse_metadata(xml)
/home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb in new
    @element = AsciiDoc::AsciiElement.new(@xml_doc.root)
/home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb in parse_xml
    @element = AsciiDoc::AsciiElement.new(@xml_doc.root)
/home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb in initialize
    parse_xml
/home/kandinski/data/work/hack/Magic-Book-Project/application.rb in new
    @document = AsciiDoc::AsciiDocument.new(asciidoc_file, {:debug_xml_to_file => File.join(output_folder, "index.xml") })
/home/kandinski/data/work/hack/Magic-Book-Project/application.rb in block in <class:Application>
    @document = AsciiDoc::AsciiDocument.new(asciidoc_file, {:debug_xml_to_file => File.join(output_folder, "index.xml") })
/usr/lib/ruby/1.9.1/webrick/httpserver.rb in service
    si.service(req, res)
/usr/lib/ruby/1.9.1/webrick/httpserver.rb in run
    server.service(req, res)
/usr/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
    block ? block.call(sock) : run(sock)

GET

No GET data. POST

No POST data. COOKIES

No cookie data. Rack ENV Variable Value GATEWAY_INTERFACE
CGI/1.1 HTTPACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,
/_;q=0.8 HTTP_ACCEPT_ENCODING
gzip, deflate HTTP_ACCEPT_LANGUAGE
en-US,en;q=0.5 HTTP_CACHE_CONTROL
max-age=0 HTTP_CONNECTION
keep-alive HTTP_DNT
1 HTTP_HOST
127.0.0.1:9393 HTTP_USER_AGENT
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0 HTTP_VERSION
HTTP/1.1 PATH_INFO
/create_html/home/kandinski/data/work/hack/The-Nature-of-Code/raw/book.asc QUERY_STRING
REMOTE_ADDR
127.0.0.1 REMOTE_HOST
localhost REQUEST_METHOD
GET REQUEST_PATH
/create_html/home/kandinski/data/work/hack/The-Nature-of-Code/raw/book.asc REQUEST_URI
http://127.0.0.1:9393/create_html/home/kandinski/data/work/hack/The-Nature-of-Code/raw/book.asc SCRIPT_NAME
SERVER_NAME
127.0.0.1 SERVER_PORT
9393 SERVER_PROTOCOL
HTTP/1.1 SERVER_SOFTWARE
WEBrick/1.3.1 (Ruby/1.9.3/2011-10-30) rack.errors

Object:0x007f50dc866800

rack.input

<Rack::Lint::InputWrapper:0x007f50dc8fcb48 @input=#>

rack.logger

<Rack::NullLogger:0x00000001eb4c30 @app=#<Rack::Protection::FrameOptions:0x00000001eb4d20 @app=#<Rack::Protection::IPSpoofing:0x00000001eb4e10 @app=#<Rack::Protection::JsonCsrf:0x00000001eb4e88 @app=#<Rack::Protection::PathTraversal:0x00000001eb4f28 @app=#<Rack::Protection::XSSHeader:0x00000001eb4fc8 @app=#<Application:0x007f50dc904f28 @default_layout=:layout, @app=nil, @template_cache=#<Tilt::Cache:0x007f50dc904f00 @cache={}>>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :frame_options=>:sameorigin, :except=>[:session_hijacking, :remote_token]}>>

rack.multiprocess
false rack.multithread
true rack.request.cookie_hash
{} rack.request.query_hash
{} rack.request.query_string
rack.run_once
false rack.url_scheme
http rack.version
[1, 1] sinatra.commonlogger
true sinatra.error

<NoMethodError: undefined method `name' for nil:NilClass>

Full backtrace on console:

kandinski@desire:~/data/work/hack/Magic-Book-Project$ shotgun config.ru == Shotgun/WEBrick on http://127.0.0.1:9393/ [2012-12-06 11:05:24] INFO WEBrick 1.3.1 [2012-12-06 11:05:24] INFO ruby 1.9.3 (2011-10-30) [x86_64-linux] [2012-12-06 11:05:24] INFO WEBrick::HTTPServer#start: pid=32375 port=9393 sh: 1: asciidoc: not found NoMethodError - undefined method name' for nil:NilClass: /home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_element.rb:14:inparse_metadata' /home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_element.rb:9:in initialize' /home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb:50:innew' /home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb:50:in parse_xml' /home/kandinski/data/work/hack/Magic-Book-Project/gems/asciidoc/lib/asciidoc/ascii_document.rb:24:ininitialize' /home/kandinski/data/work/hack/Magic-Book-Project/application.rb:17:in new' /home/kandinski/data/work/hack/Magic-Book-Project/application.rb:17:inblock in class:Application' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in call' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:inblock in compile!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in []' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:inblock (3 levels) in route!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:in route_eval' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:inblock (2 levels) in route!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:in block in process_route' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:incatch' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in process_route' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:834:inblock in route!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in each' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:inroute!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:936:in dispatch!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:inblock in call!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in block in invoke' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:incatch' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in invoke' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:incall!' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:755:in call' /var/lib/gems/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:incall' /var/lib/gems/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in call' /var/lib/gems/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:incall' /var/lib/gems/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in call' /var/lib/gems/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:incall' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in call' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/head.rb:9:incall' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/showexceptions.rb:21:in call' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:99:incall' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in block in call' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1471:insynchronize' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in call' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:48:in_call' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:36:in call' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/showexceptions.rb:24:incall' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in call' /var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:136:incall' /var/lib/gems/1.9.1/gems/shotgun-0.9/lib/shotgun/loader.rb:86:in proceed_as_child' /var/lib/gems/1.9.1/gems/shotgun-0.9/lib/shotgun/loader.rb:31:incall!' /var/lib/gems/1.9.1/gems/shotgun-0.9/lib/shotgun/loader.rb:18:in call' /var/lib/gems/1.9.1/gems/shotgun-0.9/lib/shotgun/favicon.rb:12:incall' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:134:in call' /var/lib/gems/1.9.1/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:inservice' /usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in service' /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:inrun' /usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

candeira commented 11 years ago

Closed, it was an installation problem with rbenv on ubuntu. I've sent a pull request there.

jiehanzheng commented 10 years ago

This shouldn't have anything to do with rbenv. Part of installation of asciidoc should be installing the system asciidoc package, which is required by asciidoc gem.

Installing Debian/Ubuntu's asciidoc package should solve this problem.