【问题标题】:Ruby tries to load from gem from older versionRuby 尝试从旧版本的 gem 加载
【发布时间】:2019-10-05 10:52:21
【问题描述】:

我正在尝试运行一个 script,它使用以下行调用 ansi gem:

require 'ansi/code'

但是,当我尝试运行它时,我收到以下错误:

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ansi/code (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ./taoup:4:in `<main>'

我尝试确保运行 Ruby v2.6.5 并随后重新安装了依赖项。

→ rbenv versions
  system
  2.1.3
  2.2.1
* 2.6.5 (set by /Users/ricky/.rbenv/version)

→ gem install ansi
Successfully installed ansi-1.5.0
Parsing documentation for ansi-1.5.0
Done installing documentation for ansi after 0 seconds
1 gem installed

作为参考,rubygems 似乎在 v.2.6.5 上运行。

→ gem env   
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3
  - RUBY VERSION: 2.6.5 (2019-10-01 patchlevel 114) [x86_64-darwin18]
  - INSTALLATION DIRECTORY: /Users/ricky/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/ricky/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /Users/ricky/.rbenv/versions/2.6.5/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /Users/ricky/.rbenv/versions/2.6.5/bin
  - SPEC CACHE DIRECTORY: /Users/ricky/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/ricky/.rbenv/versions/2.6.5/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-18
  - GEM PATHS:
     - /Users/ricky/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
     - /Users/ricky/.gem/ruby/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--no-rdoc --no-ri"
     - "update" => "--no-rdoc --no-ri"
  - REMOTE SOURCES:
     - https://rubygems.org/

我认为我需要指导执行环境使用我想要的 Ruby 版本。

【问题讨论】:

    标签: ruby rubygems rbenv


    【解决方案1】:

    好的,看起来脚本指向特定的 Ruby 安装,如下所示:

    #!/usr/bin/ruby
    

    这个版本的 ruby​​ 不是我打算运行的那个版本。毕竟是不同的版本:

    → /usr/bin/ruby --version 
    ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
    

    所以我通过像这样重写 Shebang 声明对脚本进行了快速而肮脏的修复:

    #!/Users/ricky/.rbenv/versions/2.6.5/bin/ruby
    

    如果有人知道一种与版本无关的方法来修复此依赖关系,请告诉我!

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2012-04-29
      • 1970-01-01
      • 2014-07-27
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      相关资源
      最近更新 更多