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'", ""]]
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:
Most helpful comment
Ruby 2.7 support released in gem 0.38.1.