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

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

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

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

升级ruby的小版本。

首先将当前的rvm升级到最新版本。

1
$ rvm get stable

然后查看当前使用的ruby版本和服务端可用的ruby版本。

1
2
3
$ rvm list

$ rvm list known

虽然不打算升级ruby主版本,但是小版本是可以尝试升级下,看是否能解决问题。比如当前你的ruby使用的是ruby-1.9.3-p448,但是查看到目前可用的1.9.3最新版本为ruby-1.9.3-p545。那么可以尝试切换到这个新版本下看能否解决问题。

1
2
3
$ 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升级到最新版本以后,在命令行下输入:

1
$ xcode-select —install

这样会弹出来一个升级对话框来升级相应的软件。

确保GCC为最新版本

查看目前电脑的gcc的版本。

1
$ gcc -v

如果需要更新gcc的话推荐通过homebrew来更新。首先更新homebrew。

1
$ brew update

然后输入下列命令。

1
2
$ brew tap homebrew/dupes
$ brew search gcc

brew会告诉你当前最新的gcc版本。例如是apple-gcc42。然后安装新版本gcc。

1
$ brew install apple-gcc42

然后查看系统是否应用了这个版本的gcc。

1
2
$ which gcc-4.2
/usr/local/bin/gcc-4.2

基本上以上的一些检查会解决掉一批由于ruby环境造成的问题。

使用ruby过程中遇到安装gem失败的一些通用解决方案的更多相关文章

  1. MySQL安装过程中对The error code is 2203的解决方案

    MySQL安装过程中对The error code is 2203的解决方案 1.问题描述 Windows系统安装MySQL遇到The error code is 2203.,具体描述如下 The i ...

  2. ubuntu 可能的依赖包,安装过程中根据需要安装

    /*************依赖包安装****************/下面是可能的依赖包,安装过程中根据需要安装 build-essential - libglib2.-dev libpng3 li ...

  3. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  4. 安装python caffe过程中遇到的一些问题以及对应的解决方案

    关于系统环境: Ubuntu 16.04 LTS cuda 8.0 cudnn 6.5 Anaconda3 编译pycaffe之前需要配置文件Makefile.config ## Refer to h ...

  5. Odoo 仓库调拨移动过程中 单位不允许错误的分析及解决方案

    Odoo 仓库调拨过程中,有时候会碰见一下错误内容: The roundings of your Unit of Measures on the move vs.  on the product do ...

  6. 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终解决方案

    根据之前解析的循环依赖的源码, 分析了一级缓存,二级缓存,三级缓存的作用以及如何解决循环依赖的. 然而在多线程的情况下, Spring在创建bean的过程中, 可能会读取到不完整的bean. 下面, ...

  7. grunt-contrib-qunit安装过程中phantomjs安装报错问题解决

    今天自己fork了一个github上别人写的一个关于grunt项目的一个小demo(https://github.com/cowboy/jquery-tiny-pubsub),主要是想学习下grunt ...

  8. centos7安装过程中的安装源设置

    centos7的安装源设置:http://mirrors.aliyun.com/centos/7/os/x86_64/

  9. Setup Factory 9 打包安装程序过程中提示安装.net4.5、并启用md5加密算法

    1.在Before Installing选项卡中选择Ready to Install,点击Edit进入编辑窗口,切到最后一个选项卡Actions,把判断内容复制进去 -- These actions ...

随机推荐

  1. java反射案例

     Java反射经典实例 2007-08-29 17:55:25 分类: Java Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射.反射机制是如今很多流行框架的实现 ...

  2. HTML页面跳转的5种方法

    下面列了五个例子来详细说明,这几个例子的主要功能是:在5秒后,自动跳转到同目录下的hello.html(根据自己需要自行修改)文件.1) html的实现 <head> <!-- 以下 ...

  3. 使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法

    1 问题提出 1.1 概述 提高ArcGIS server并发性能的方法很多,本文讨论在用户硬件足够强大的情况下(主要是内存足够大),使用内存模拟硬盘来提高数据的读取效率,以达到提高ArcGIS se ...

  4. <form>属性

    当form表单中action没有值时,默认当前页方法.

  5. 关于angular的一些新手容易忽略的小知识点

    1.解决页面刚加载时使用{{name}}这种方式绑定数据会有一瞬间的表达式显示的问题 方法一:  使用ng-bind来绑定数据, 方法二:  添加ng-cloak指令:如 <div ng-app ...

  6. 黑马程序员_Java基础:多线程总结

    ------- android培训.java培训.期待与您交流! ---------- 一.多线程的概念 进程和线程经常会被人混淆,那是因为对它们的概念不明确.就拿我们平时使用的操作系统来说,它是多任 ...

  7. Python生成器的经典程序

    import random def get_data(): """返回0到9之间的3个随机数""" return random.sample ...

  8. SSM+DUBBO/ZK异常

    1.Could not find resource(mybatis本身不支持通配符,是spring提供的ant匹配法) 2.ClassNotFoundException: org.I0Itec.zkc ...

  9. [XAF] Simplifying integration of custom controls bound to data from XAF application database

    ASP.NET:  http://www.screencast.com/t/OHhcHD9vy WinForms: http://www.screencast.com/t/8M8K4eskkYO9

  10. WideCharToMultiByte和MultiByteToWideChar函数的用法

    为了支持Unicode编码,需要多字节与宽字节之间的相互转换.这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读<Windows核心编程>,总结出正确的用法. ...