2015-02-23 147 views
0

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

当我键入“rails server”时,我收到错误消息“您的ruby版本是2.1.5,但您的Gemfile指定了2.1.2(Bundler :: RubyVersionMismatch)”。它给我的信息之一是“ruby-2.1.2没有安装”。然后它说:“安装的更多信息:RVM安装Ruby 2-1-2”

我试着在Gemfile中注释掉红宝石版和/或改变的版本号,但现在我得到更多的错误信息:

enter image description here

+0

是什么让你觉得你不能?你试过了吗?与“2.1.2”相比,“2.1.5”只是一组错误修复。 Ruby遵循[语义版本控制](http://semver.org/),这应该有助于你理解任何版本之间的差异。 – Jon 2015-02-23 15:48:26

+0

我已更新我的问题以说明我为什么这么想。 – Ray 2015-02-23 15:52:31

+1

您在database.yml中输入了错误的参数。将您的Rails应用程序连接到您的数据库的连接参数是不正确的... – 2015-02-23 16:36:44

回答

2

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

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

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

通常这是与完成:

bundle install 

注意Bundler本身就是一个宝石,所以你可能需要安装,如果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 

这应该使其可用。

+0

当我尝试捆绑安装时,它给了我相同的不匹配错误消息。 – Ray 2015-02-23 15:54:42

+1

我已经修改了答案,并回复了您在问题中添加的详细信息。通常这可以通过安装正确的版本来解决,如果您想要完全匹配,可以使用2.1.2版本,也可以将需求反弹到2.1.5版本并使用该版本。 – tadman 2015-02-23 15:56:00

3

中庸之道删除/评论中的Gemfile这样

#ruby '2.1.2' 

指定红宝石的版本,或在你的环境中安装红宝石 '2.1.2' 与RVM(Ruby的版本管理器):

RVM

+0

他已经有2.1.5了 - 你的意思是“用RVM安装2.1.2”吗? – 2015-02-23 16:08:38

+0

试过但更多的错误见上面的图片。 – Ray 2015-02-23 16:23:07

+0

@射线以上错误与Ruby版本无关。 – Substantial 2015-02-23 17:03:30

相关问题