puppetlabs / puppet-editor-services

Puppet Language Server for editors
Apache License 2.0
45 stars 21 forks source link

undefined method `escape' for URI:Module (NoMethodError) #295

Closed schwanberger closed 3 years ago

schwanberger commented 3 years ago

Describe the Bug

Unable to start the language server due to a deprecated method being called

Expected Behavior

I expect that the language server would be starting, having followed the instructions

Steps to Reproduce

Follow the instructions in section "Setting up editor services for development"

Environment

INFO -- : Language Server is v1.1.0 Windows 10, Version 2004 (OS Build 19041.804) 64-bit

Additional Context

The issue seems to be identical to this one
https://github.com/ruby/uri/issues/14

jpogran commented 3 years ago

Could you attach or paste an example of the error you are getting? What ruby version are you using?

glennsarti commented 3 years ago

Looks like puppet itself does not support Ruby 3.0, which is probably where the error is originating from.

In particular https://github.com/puppetlabs/puppet/blob/7.5.0/lib/puppet/util.rb#L469-L472

root@dceca8a273d2:/workspaces/puppet-editor-services# bundle exec rspec --default spec/languageserver spec/languageserver/unit/puppet-languageserver/uri_helper_spec.rb

An error occurred while loading ./spec/languageserver/unit/puppet-languageserver/uri_helper_spec.rb.
Failure/Error: require 'puppet'

NoMethodError:
  undefined method `escape' for URI:Module
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/util.rb:476:in `uri_encode'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/util.rb:344:in `path_to_uri'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/pops/model/ast.rb:4667:in `register_pcore_types'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/pops.rb:120:in `<module:Puppet>'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/pops.rb:1:in `<top (required)>'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/parser/compiler.rb:8:in `require'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/parser/compiler.rb:8:in `<top (required)>'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/parser.rb:6:in `require'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet/parser.rb:6:in `<top (required)>'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet.rb:352:in `require'
# /usr/local/bundle/gems/puppet-7.5.0/lib/puppet.rb:352:in `<top (required)>'
# ./lib/puppet_languageserver.rb:74:in `require'
# ./lib/puppet_languageserver.rb:74:in `require_gems'
# ./lib/puppet_languageserver.rb:213:in `init_puppet'
# ./spec/languageserver/spec_helper.rb:19:in `<top (required)>'
# ./spec/languageserver/unit/puppet-languageserver/uri_helper_spec.rb:1:in `require'
# ./spec/languageserver/unit/puppet-languageserver/uri_helper_spec.rb:1:in `<top (required)>'
No examples found.

Finished in 0.00005 seconds (files took 7.22 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
jpogran commented 3 years ago

Closing this as we are dependent on which versions of Ruby are supported by Puppet, and Ruby 3.0 is not planned to be supported until the Puppet 8.0 timeframe