【问题标题】:Running old Ruby versioned app on newer version of Ruby在较新版本的 Ruby 上运行旧 Ruby 版本的应用程序
【发布时间】:2015-02-23 15:44:44
【问题描述】:

是否可以在安装了 Ruby 2.1.5 的机器上运行使用 Ruby 2.1.2 开发的 Ruby 应用程序?我是 Ruby 新手,我开始认为这是不可能的。新版本的 Ruby 不能运行旧版本?有人可以确认吗?

当我输入“rails server”时,我收到错误消息“您的 ruby​​ 版本是 2.1.5,但您的 Gemfile 指定了 2.1.2 (Bundler::RubyVersionMismatch)”。它给我的消息之一是“未安装 ruby​​-2.1.2”。然后它说“要安装:rvm install ruby​​ 2-1-2”

我尝试在 Gemfile 中注释掉 ruby​​ 版本和/或更改版本号,但我现在收到更多错误消息:

【问题讨论】:

  • 是什么让你认为你做不到?你试过了吗?与2.1.2 相比,2.1.5 只是一组错误修复。 Ruby 遵循Semantic Versioning,这应该可以帮助您了解任何版本之间的差异。
  • 我已经更新了我的问题以说明我为什么这么认为。
  • 您在 database.yml 中输入了错误的参数。将 Rails 应用程序连接到数据库的连接参数不正确...
  • 您能解释一下为什么更改 Ruby 的版本需要更改 database.yml 文件吗?当我在 Ruby 2.1.5 中运行它时,它运行良好。

标签: ruby-on-rails ruby


【解决方案1】:

只需像这样删除/评论您在 Gemfile 中指定的 ruby​​ 版本

#ruby '2.1.2'

或者在您的环境中使用 RVM(Ruby 版本管理器)安装 ruby​​ '2.1.2':

RVM

【讨论】:

  • 他已经有 2.1.5 - 你的意思是“用 RVM 安装 2.1.2”吗?
  • @Ray 以上错误与 Ruby 版本无关。
【解决方案2】:

就最近的历史而言,Ruby 语言的最大转变是在 Ruby 1.8 和 Ruby 1.9 之间,由于语法变化和强制 UTF-8 编码,许多事情引起了冲突。

Ruby 2.0 和 2.1 引入了更多功能,但不会真正影响向后兼容性。从 2.1.2 到 2.1.5 的转变很少会导致问题,但有一个例外:

  • 您可能需要重新安装所有捆绑的 gem。

通常这是通过以下方式完成的:

bundle install

请注意,Bundler 本身是一个 gem,因此如果 bundle 命令不适用于该版本的 Ruby,您可能需要安装它:

gem install bundler

如果您因Gemfile 中的 Ruby 版本不匹配而发生冲突,请编辑该文件以反映您所需的版本。

许多多版本的 Ruby 管理器,如 RVMRBenv 使用主应用程序目录中的 .ruby-version 文件来指定它。这是一种比将 Ruby 版本锁定在 Gemfile 本身中更温和的方法。

如果您需要在服务器上安装新版本的 Ruby:

rvm install 2.1.5
rvm --default 2.1.5
rvm use 2.1.5
gem install bundler
bundle install

这应该使它可用。

【讨论】:

  • 当我尝试捆绑安装时,它给了我同样的不匹配错误消息。
  • 我已经修改了答案,回复了您在问题中添加的详细信息。通常,这可以通过安装正确的版本来解决,如果您想完全匹配,可以选择 2.1.2,或者将要求提高到 2.1.5 并改用它。
猜你喜欢
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2018-12-08
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多