Ruby升级后出现了search_up: undefined method 'untaint'错误。

16

我是一个业余编码者。为了升级我的Heroku堆栈,我必须使用较新的Ruby版本。我按照教程升级到了Ruby 3.2。

在升级之后,每当我尝试做任何事情,比如“rails s”或者“bundle update”,我就会出现下面的错误。我在网上搜寻了很多,但都没有找到什么有用的信息。

您有什么想法吗?

非常感谢任何提示。

ec2-user:~/environment/website (master) $ bundle update

/home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:272:in `search_up': undefined method `untaint' for "/home/ec2-user/environment/website":String (NoMethodError)

  current  = File.expand_path(SharedHelpers.pwd).untaint
                                                ^^^^^^^^
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:259:in `find_file'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:251:in `find_gemfile'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/shared_helpers.rb:27:in `root'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler.rb:234:in `root'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler.rb:246:in `app_config_path'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler.rb:273:in `settings'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/feature_flag.rb:21:in `block in settings_method'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/cli.rb:97:in `<class:CLI>'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/cli.rb:7:in `<module:Bundler>'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/cli.rb:6:in `<top (required)>'
    from <internal:/home/ec2-user/.rvm/rubies/ruby-3.2.0-preview1/lib/ruby/3.2.0+1/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/home/ec2-user/.rvm/rubies/ruby-3.2.0-preview1/lib/ruby/3.2.0+1/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/exe/bundle:23:in `block in <top (required)>'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/gems/bundler-1.17.3/exe/bundle:22:in `<top (required)>'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/bin/bundle:25:in `load'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/bin/bundle:25:in `<main>'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/bin/ruby_executable_hooks:22:in `eval'
    from /home/ec2-user/.rvm/gems/ruby-3.2.0-preview1/bin/ruby_executable_hooks:22:in `<main>'

bundle exec rails s 会产生相同的输出吗? - Masroor
2个回答

23

在安装之前,请检查Gemfile.lock,你应该先删除Gemfile.lock(因为锁定文件依赖于旧版本的Ruby)。


13

Ruby 3.2.0已经移除了一些不推荐使用的方法(taint/trust/untaint/untrust),参考:https://bugs.ruby-lang.org/issues/16131。 Bundler版本1.17.3在shared_helpers.rb文件中仍然使用了这些方法。请尝试更新Bundler到2.4.1版本。


FYI,我需要在安装 bundler 3.2 之前卸载 bundler 1.14 --- 类似 gem uninstall bundler --version '<2' && gem install bundler 这样的命令应该可以解决问题。 - AlexChaffee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接