edgecase / ghpreview

Preview Markdown files (such as a README) exactly how it will appear on Github
MIT License
27 stars 4 forks source link

Fix crash for new installs #17

Closed enriquez closed 10 years ago

enriquez commented 10 years ago

There seems to be a problem with github-linguist 2.1. Removing the dependency will install github-linguist 2.6 which fixes the problem for me.

The crash I was getting:

$ ghpreview README.md 
/Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/blankslate-3.1.2/lib/blankslate.rb:51: warning: undefining `object_id' may cause serious problems
/Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/mime-types-1.25/lib/mime/types.rb:105:in `priority_compare': undefined method `zero?' for nil:NilClass (NoMethodError)
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/mime-types-1.25/lib/mime/types.rb:656:in `block in []'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/mime-types-1.25/lib/mime/types.rb:656:in `sort'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/mime-types-1.25/lib/mime/types.rb:656:in `[]'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/mime-types-1.25/lib/mime/types.rb:848:in `[]'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/github-linguist-2.1.0/lib/linguist/mime.rb:26:in `block in <top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/github-linguist-2.1.0/lib/linguist/mime.rb:12:in `each'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/github-linguist-2.1.0/lib/linguist/mime.rb:12:in `<top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/github-linguist-2.1.0/lib/linguist/blob_helper.rb:3:in `<top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/github-linguist-2.1.0/lib/linguist.rb:1:in `<top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:58:in `require'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/html-pipeline-0.0.6/lib/html/pipeline/syntax_highlight_filter.rb:1:in `<top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/ghpreview-0.0.9/lib/ghpreview/converter.rb:19:in `to_html'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/ghpreview-0.0.9/lib/ghpreview/previewer.rb:26:in `open'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/ghpreview-0.0.9/lib/ghpreview/previewer.rb:15:in `initialize'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/ghpreview-0.0.9/bin/ghpreview:35:in `new'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/ghpreview-0.0.9/bin/ghpreview:35:in `<top (required)>'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/bin/ghpreview:23:in `load'
    from /Users/enriquez/.rbenv/versions/2.0.0-p247/bin/ghpreview:23:in `<main>'

You might be able to reproduce this by uninstalling all versions of github-linguist except for version 2.1 from your system.

adamlogic commented 10 years ago

I'm having no luck with this. Without the version constraint, linguist 2.9.5 is installed. It installs successfully, but I get this error when running it:

/Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:240:in `initialize': Haxe is missing lexer (ArgumentError)
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:39:in `new'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:39:in `create'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:478:in `block in <module:Linguist>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:458:in `each'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:458:in `<module:Linguist>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/language.rb:8:in `<top (required)>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist/blob_helper.rb:2:in `<top (required)>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/github-linguist-2.9.5/lib/linguist.rb:1:in `<top (required)>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/html-pipeline-0.0.6/lib/html/pipeline/syntax_highlight_filter.rb:1:in `<top (required)>'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/ghpreview-0.0.9/lib/ghpreview/converter.rb:19:in `to_html'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/ghpreview-0.0.9/lib/ghpreview/previewer.rb:26:in `open'
    from /Users/adam/.rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/ghpreview-0.0.9/lib/ghpreview/previewer.rb:15:in `initialize'
    from ./bin/ghpreview:35:in `new'
    from ./bin/ghpreview:35:in `<main>'

I also tried using the latest version of html-pipeline by removing that version constraint. Same problem. I tried other various combinations, and I just can't get html-pipeline and linguist playing nicely together.

If you gem uninstall ghpreview html-pipeline github-linguist, are you actually able to reinstall and run successfully?

adamlogic commented 10 years ago

FWIW, just tried to install on ruby 2.0.0-p247 with the same issue.

enriquez commented 10 years ago

I still get the NoMethodError exception when uninstalling the gems you specified then reinstalling.

I think the issue is with mime-types. I was able to get it to work by using mime-types 1.18 instead of 1.25. I used mime-types 1.18 because github-linguist 2.1.2 specifies it here http://rubygems.org/gems/github-linguist/versions/2.1.2.