在较新版本的Ruby上运行旧的Ruby版本的应用程序

时间:2015-02-23 15:44:45

标签: ruby-on-rails ruby

是否可以在安装了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未安装”。然后它说“要安装do:rvm install ruby​​ 2-1-2”

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

enter image description here

2 个答案:

答案 0 :(得分:3)

Juste删除/评论您在Gemfile中指定的ruby版本,如此

#ruby '2.1.2'

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

RVM

答案 1 :(得分:2)

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

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

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

通常这可以通过以下方式完成:

bundle install

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

gem install bundler

如果由于Gemfile中的Ruby版本不匹配而导致冲突,请编辑该文件以反映所需的版本。

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

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

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

这应该可以使用。