0

我的 RubyGems 不工作,抛出如下错误,触发(几乎)任何 Gem 任务:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems.rb:1081:in `<top (required)>': uninitialized constant Gem::GEM_PRELUDE_SUCKAGE (NameError)
    from <internal:gem_prelude>:1:in `require'
    from <internal:gem_prelude>:1:in `<compiled>'

我是 Ruby / RubyGems / 安装 Ruby 的新手,我所知道的是未初始化的常量本质上是一个未定义的变量。它也可能与 Ruby 本身有关,尽管 -> Gem:GEM<-_PRELUDE_SUCKAGE将我指向 RubyGems。

简而言之,我安装了一堆 Ruby 的东西(想想 RVM、rbenv 等)来开发 Ruby on Rails,因为我认为这将是学习 Ruby 的好方法。

好吧,在经历了一个漫长而乏味的过程之后,将 Ruby 升级到 2.6.3,然后降级到 2.5.5,然后 2.4.0,然后回到 2.5.5 并解决降级问题,RubyGems 抛出错误。我选择了 2.5.5,因为 2.6.3 会导致错误,而 2.4.0 版本太早了。

它会导致各种错误,例如 HAML 未编译和 Rails 未制作控制器。我真的不知道发生了什么。

如果我运行gem install [gem name],它会引发错误。运行rails generate controller [name] index(对于那些不熟悉 Rails 的人来说,这会创建一个控制器)它会抛出错误。真正使用gem命令执行任何操作都会导致错误,除了gem server.

如果我升级回最新的 Ruby 版本,我担心我的gem命令会再次出现问题,我将不得不再经历一天的故障排除版本。我该如何解决这个问题,或者至少摆脱消息,以便我可以再次创建东西?

4

1 回答 1

0

我今天就发生了这种情况。不知何故,我的 ruby​​ 版本似乎已损坏。当我运行rvm list2.5.1 版时,它被列为“损坏”。我必须完全卸载 2.5.1(即使在我的情况下也使用 sudo)才能获得一个全新的版本。

然后,当尝试重新安装时,rvm 在我最初无法正确安装的新 gpg 密钥之后给了我各种悲伤(提示)。

彻底擦除 ruby​​ 2.5.1,将 rvm 更新到最新版本并重新安装后,我收到此错误:Error running 'env GEM_HOME=/ruby-2.5.1@global GEM_PATH= /Users/user/.rvm/rubies/ruby-2.5.1/bin/ruby -d /Users/user/.rvm/src/rubygems-3.0.8/setup.rb --no-document',.

似乎 MacOSX 的更新弃用了导致一些问题的 OpenSSL 版本。我最终关注了这个线程并运行rvm gemset create global --default,然后bundle install通过了 Gem 错误。

老实说,rails 应该比这更容易。我希望码头工人有时更容易推理。这些是 docker 承诺要解决的问题,嗯?

于 2020-03-10T03:55:05.250 回答