【问题标题】:How do I fix this load error during shell start?如何在 shell 启动期间修复此加载错误?
【发布时间】:2019-04-14 17:52:46
【问题描述】:

每当我启动 shell 时,我都会收到一个错误,说它无法加载一个 gem,奇怪地命名为 ubygems(请注意缺少 r)。 p>

➜ reload                       
Traceback (most recent call last):
    1: from /home/ux/.asdf/installs/ruby/2.5.5/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/home/ux/.asdf/installs/ruby/2.5.5/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- ubygems (LoadError)

 * keychain 2.8.2 ~ http://www.funtoo.org
 * Found existing ssh-agent: 6895
 * Known ssh key: /home/ux/.ssh/id_rsa

Startup time: 623610 ms

这是 asdf 的问题还是其他问题?

【问题讨论】:

  • ubygems?这听起来像一个错字。很多时候,你会在项目中出现require 'rubygems' 这样的行。在您的应用中搜索ubygem 并将其替换为rubygems
  • 如何启动shell?
  • @spickermann:不是错字。是红宝石的一个鲜为人知的特性。看我的回答:)

标签: ruby shell zshrc asdf-vm


【解决方案1】:

该功能 (ubygems.rb) 在 ruby​​ 2.5 中被删除:https://github.com/rubygems/rubygems/issues/2393

它被用来从命令行执行require "rubygems",如下所示:

ruby -rubygems ...

注意-rubygems 中的“r”是一个标志,意思是“需要”。而“ubygems”就是它需要的东西。默认情况下未加载 ruby​​gems 时需要它。但现在它们是,所以这个功能不再有意义了。

您应该更改打开 shell 的命令。或者在 2.5 之前切换到 ruby​​

【讨论】:

  • 你是对的...根据您的评论和上面的评论,我现在可以确认这实际上来自我的 zshenv 上的东西,读起来像 export PATH="$PATH:$(ruby -rubygems -e 'puts Gem.user_dir')/bin" 运行那个位在 shell 上导致我上面报告的错误。直到最近我才开始使用 Ruby > 2.5。在 Ruby > 2.5 中完成该行试图完成的任务的正确方法是什么?
  • 在 Github 上找到了相关问题的答案。我需要 ruby -rrubygems ... 而不是像我正在做的单个 r
  • @PauloPhagula 你可以完全放下旗帜。
猜你喜欢
  • 2011-02-20
  • 2020-04-26
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多