Solargraph: Ruby 2.7 support?

Created on 9 Oct 2019  路  7Comments  路  Source: castwide/solargraph

Hi everyone!

I鈥檓 unable to get Solargraph to work with Ruby 2.7.0-preview1, using the latest versions of vim-lsp and neovim. I鈥檓 using core 2.6.4.

Here鈥檚 the relevant error from vim-lsp:

Wed 09 Oct 2019 02:58:22 PM UTC:["<---(stderr)", 80, "solargraph", ["/var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/spec_set.rb:87:in `block in materialize'"]]
Wed 09 Oct 2019 02:58:22 PM UTC:["<---(stderr)", 80, "solargraph", [": Could not find parallel-1.18.0 in any of the sources (Bundler::GemNotFound)", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/spec_set.rb:81:in `map!'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/spec_set.rb:81:in `materialize'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/definition.rb:170:in `specs'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/definition.rb:237:in `specs_for'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/definition.rb:226:in `requested_specs'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:108:in `block in definition_method'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:20:in `setup'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler.rb:107:in `setup'", "\tfrom /var/lib/gems/2.5.0/gems/bundler-2.0.2/lib/bundler/setup.rb:20:in `<top (required)>'", "\tfrom /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'", "\tfrom /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'", ""]]

Most helpful comment

Ruby 2.7 support released in gem 0.38.1.

All 7 comments

solargraph scan fails with ruby 2.7.0 .
works with 2.6.5.

/Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- irb/slex (LoadError)
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/ruby_lex.rb:2:in `<top (required)>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:5:in `<class:TokenList>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:4:in `<module:Legacy>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:3:in `<module:YARD>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:2:in `<top (required)>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/overload_tag.rb:59:in `parse_signature'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/overload_tag.rb:10:in `initialize'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:162:in `new'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:162:in `overload_tag'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:274:in `tag_create'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:215:in `create_tag'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:156:in `block in parse_content'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:142:in `each'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:142:in `each_with_index'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:142:in `parse_content'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/docstring_parser.rb:117:in `parse'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/source.rb:539:in `parse_docstring'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/pin/reference/override.rb:22:in `from_comment'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/core_fills.rb:26:in `<module:CoreFills>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/core_fills.rb:4:in `<module:Solargraph>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/core_fills.rb:3:in `<top (required)>'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/yard_map.rb:104:in `core_pins'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/yard_map.rb:205:in `process_requires'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/yard_map.rb:47:in `initialize'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:40:in `new'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:40:in `block in index'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:37:in `synchronize'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:37:in `index'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:31:in `initialize'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:170:in `new'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/api_map.rb:170:in `load'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/shell.rb:166:in `block in scan'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/benchmark.rb:293:in `measure'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/lib/solargraph/shell.rb:165:in `scan'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
    from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/solargraph-0.38.0/bin/solargraph:5:in `<top (required)>'
    from /Users/skoji/.rbenv/versions/2.7.0/bin/solargraph:23:in `load'
    from /Users/skoji/.rbenv/versions/2.7.0/bin/solargraph:23:in `<main>'

OK it's YARD problem: (issue)

require 'yard'
YARD::Doctoring.parser.parse('@overload foo()')
#=>
Traceback (most recent call last):
       16: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:274:in `tag_create'
       15: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:162:in `overload_tag'
       14: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/library.rb:162:in `new'
       13: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/overload_tag.rb:10:in `initialize'
       12: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/tags/overload_tag.rb:59:in `parse_signature'
       11: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
       10: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        9: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:2:in `<top (required)>'
        8: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:3:in `<module:YARD>'
        7: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:4:in `<module:Legacy>'
        6: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/token_list.rb:5:in `<class:TokenList>'
        5: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        4: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        3: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/yard-0.9.20/lib/yard/parser/ruby/legacy/ruby_lex.rb:2:in `<top (required)>'
        2: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        1: from /Users/skoji/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
LoadError (cannot load such file -- irb/slex)

PR #253 adds support for Ruby 2.7. I expect to include it in the next gem release.

since the new yard gem is out solograh is working again but there a lot of 2.7.0 warnings

/lib/solargraph/language_server/uri_helpers.rb:15: warning: URI.unescape is obsolete
/lib/solargraph/pin/conversions.rb:84: warning: URI.escape is obsolete

ruby docs mention
https://ruby-doc.org/stdlib-2.7.0/libdoc/uri/rdoc/URI/Escape.html#method-i-unescape

This method is obsolete and should not be used. Instead, use CGI.unescape, URI.decode_www_form or URI.decode_www_form_component depending on your specific use case.

apparentlty URI.unescape has been marked unsafe for the last 10 years,, well thats news to me

Thanks, I'll look into that. The CGI alternatives should be fine.

Ruby 2.7 support released in gem 0.38.1.

Woohooo! Thanks! :purple_heart:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

patilarpith picture patilarpith  路  5Comments

Sam-Killgallon picture Sam-Killgallon  路  5Comments

cuongn265 picture cuongn265  路  3Comments

douglascamata picture douglascamata  路  5Comments

gencer picture gencer  路  3Comments