sord
sord copied to clipboard
Ruby 3.2 support (File.exists? has been removed)
Describe the bug
Ruby 3.2 removes File.exists?
. File.exist?
should be used instead.
To Reproduce
Run sord defs.rbs
with ruby 3.2.
Expected behavior
I expected no exception.
Actual behavior
I get the following error:
[ERROR] undefined method `exists?' for File:Class
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/user_interaction.rb:364:in `method_missing'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:35:in `block in load_gem_objects'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:34:in `each'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:34:in `load_gem_objects'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:13:in `prepare'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:83:in `paths_for'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/resolver.rb:95:in `path_for'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/type_converter.rb:162:in `yard_to_parlour'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/type_converter.rb:139:in `block in yard_to_parlour'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/type_converter.rb:139:in `map'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/type_converter.rb:139:in `yard_to_parlour'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:394:in `block in add_methods'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:282:in `each'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:282:in `add_methods'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:586:in `add_namespace'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:603:in `block in populate'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:603:in `each'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:603:in `populate'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/generator.rb:623:in `run'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/lib/sord/parlour_plugin.rb:77:in `generate'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/sord-5.0.0/exe/sord:92:in `block (2 levels) in <top (required)>'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/command.rb:187:in `call'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/command.rb:157:in `run'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/runner.rb:444:in `run_active_command'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/runner.rb:58:in `run!'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/delegates.rb:18:in `run!'
/opt/homebrew/Cellar/rbenv/1.2.0/versions/3.2.2/lib/ruby/gems/3.2.0/gems/commander-4.6.0/lib/commander/import.rb:7:in `block in <top (required)>'
Additional information
File.exists?
was removed here: https://github.com/ruby/ruby/commit/bf97415c02b11a8949f715431aca9eeb6311add2.
I haven't provided a ton of extra detail in reproduction steps because I believe this is a straight-forward case. Please let me know if it's not so straight-forward and I can provide more specific information.