RubyGem 版本降级

RubyGem 版本降级

sudo rake db:migrate当执行命令时出现下面的错误信息。

rake aborted!
RubyGem version error: rack(1.4.1 not ~> 1.1.0)

我猜 RubyGem 版本比预期的要高。我该如何降级 RubyGem 的版本?

答案1

RubyGems 的“太新”版本确实会对一些较旧的应用程序造成问题(主要是那些仍在使用 Rails 2.x 的应用程序),但您发布的错误消息似乎表明了不同的原因。您的应用程序需要特定版本的 Rack gem,而您安装的版本可能不符合该要求。

您的应用程序要求 rack ~> 1.1.0。1.1.x 系列中的任何版本都符合该条件,例如 1.1.0、1.1.5 或 1.1.345,但 1.2.0 或 2.0.0 不符。您似乎已在 1.4.1 中安装了 Rack,这与条件 ~> 1.1.0 不符。

幸运的是,你可以同时安装同一 gem 的不同版本。要检查你安装了哪个版本的 Rack,你可以使用

gem list -l rack

该列表是本地安装的(因为 -l 开关)名称以“rack”开头的 gem。该列表中可能没有 1.1.x 系列的版本。

要安装特定版本的 gem,您可以使用 --version=xyz 选项,以适应您的情况

gem install rack --version=1.1.0

您的迁移很可能会通过此方式进行。

如果你确实需要降级 RubyGems,你首先需要安装你想降级到的版本的 RubyGems gem(:D),类似于你上面所做的,例如

gem install rubygems-update --version=x.y.z

然后你就可以执行“更新”(在你的情况下是降级)

gem update --system x.y.z

其中 xyz 是您想要的版本号。请注意,RubyGems 1.5.1 中引入了“更新”到特定版本的功能,因此您无法降级到低于该版本的任何版本。

相关内容