ruby语言升级还是比较勤快的。但是数量众多的版本使得程序库的兼容性成了大问题。有些gem表示明确不支持某个特定版本以前的ruby,而有些gem则与较高的版本不兼容。再加上gem本身也有版本,简直是乱成了一锅粥。即使使用了rvm、rbenv之类ruby版本管理工具也避免不了掉入坑中。并且时不时的一些其它环境设置也给你捣乱。所以一般使用ruby程序时,对升级ruby版本或各种gem版本都是比较慎重的,避免一时手贱掉入坑中。

当然你也不能因此就做缩头乌龟,某些情况下还是不得不升级的。比如想使用ruby或gem新版本的特性。而我本人无论使用什么软件都喜欢升级到最新版本,ruby程序也不例外。时间久了栽的次数多了也慢慢摸索出了一些经验。这里分享一下,希望大家都能避免这些坑,大胆的升级。

由于本人使用的操作系统是mac,所以这些tips都是基于MAC系统的。

当运行ruby脚本或者bundle install时,出错了首先一定要仔细看错误日志。如果有明确的出错日志,自己能解决的就可以着手解决,不知如何解决的可以选取关键词google之,一般也能找到解决方案。怕就怕google一圈以后还是不知如何是好。那么可以尝试下下面的几种方法。

升级ruby的小版本。

首先将当前的rvm升级到最新版本。
复制代码 代码如下:$ rvm get stable
然后查看当前使用的ruby版本和服务端可用的ruby版本。
复制代码 代码如下:$ rvm list
$ rvm list known
虽然不打算升级ruby主版本,但是小版本是可以尝试升级下,看是否能解决问题。比如当前你的ruby使用的是ruby-1.9.3-p448,但是查看到目前可用的1.9.3最新版本为ruby-1.9.3-p545。那么可以尝试切换到这个新版本下看能否解决问题。
复制代码 代码如下:$ rvm install ruby-1.9.3-p545

$ rvm use ruby-1.9.3-p545
确保Xcode及Command line developer tools为最新版本
请确保本机的Xcode的 command line developer tools已经安装并且是最新版本。把Xcode升级到最新版本以后,在命令行下输入:
复制代码 代码如下:$ xcode-select —install
这样会弹出来一个升级对话框来升级相应的软件。

确保GCC为最新版本
查看目前电脑的gcc的版本。
复制代码 代码如下:$ gcc -v
如果需要更新gcc的话推荐通过homebrew来更新。首先更新homebrew。
复制代码 代码如下:$ brew update
然后输入下列命令。

复制代码 代码如下:$ brew tap homebrew/dupes
$ brew search gcc
brew会告诉你当前最新的gcc版本。例如是apple-gcc42。然后安装新版本gcc。
复制代码 代码如下:$ brew install apple-gcc42
然后查看系统是否应用了这个版本的gcc。
复制代码 代码如下:$ which gcc-4.2
/usr/local/bin/gcc-4.2
基本上以上的一些检查会解决掉一批由于ruby环境造成的问题。

标签:
ruby,gem

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“ruby安装gem包失败的通用解决方法”
暂无“ruby安装gem包失败的通用解决方法”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。