头图

RVM切换到rbenv[MacOS]

参考原文: https://gist.github.com/akdetrick/7604130
本文在翻译原文基础上对在实际操作中发生的问题追加了零星的解决办法.

rvm vs rbenv

起初看着RVM功能要比rbenv多, 所以选择了RVM来管理ruby的版本, 但经过一段时间的使用发现对于ruby版本的控制还是rbenv方便些, 而且Gemset的设置多少有点麻烦, 设置不好连rails创建项目都报错. 所以索性换成rbenv.

1) remove RVM from your system


首先,要删除RVM.

以下的命令等让你清理掉RVM的安装文件以及通过RVM安装的所有版本的Ruby.

# rvm 的"自爆"模式, 将自动删除安装的ruby和自身的文件
$ rvm implode

# 偶尔会有因权限问题导致 ~/.rvm 删除不掉的问题
$ sudo rm -rf ~/.rvm

$ gem uninstall rvm
$ rm ~/.rvmrc
$ rm /etc/rvmrc

2) remove any remaining traces of RVM


从以下文件中删除所有关联rvm引用路径的设置

  • .profile
  • .bash_profile
  • .bashrc

zsh还需要修改:

  • .zshrc

3) install rbenv


使用Homebrew安装rbenv和ruby-build插件

rbenv的安装也可以参考rbenv自家的文档: https://github.com/rbenv/rbenv#installation

$ brew update
$ brew install rbenv ruby-build

4) install rubies for rbenv


使用rbenv安装需要的ruby版本

# 列出可安装的ruby稳定版本:
$ rbenv install -l

# 安装指定版本的ruby:
$ rbenv install 2.0.0-p247

Note: 新安装一个ruby版本或gem之后如果出现问题, 运行 $ rbenv rehash命令

5) switching ruby versions in rbenv


切换使用的ruby版本

有两种方法可以切换使用的ruby版本

在项目路径中指定使用的ruby版本

大部分ruby项目路径中包含有一个.ruby-version文件, 用以指定在该项目中使用的ruby版本.

手动更换版本

# 列出所有已安装,可使用的ruby版本
$ rbenv versions

# 设置在当前目录下使用的版本
$ rbenv local 3.0.4

# 设置全局使用版本
$ rbenv global 3.0.4

6) install the bundler gem


安装bundler gem

我们推荐你安装bundler, 在ruby使用中它是必不可少的一个工具, bundler可以帮你管理项目中所依赖的各种gem包.

$ gem install bundler

7) never fight with RVM again


PS: 过程中遇到的问题

rbenv安装ruby时报错: BUILD FAILED

具体报错内容没能及时保存, 在so上找到一篇类似的内容:

https://stackoverflow.com/questions/23177652/rbenv-install-ruby-build-failed

只是描述的问题相似, 但我并不是通过条目里的最高赞答复解决的问题, 我使用的反而是这一条:

so capture

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

不知道是不是因为删除了整个CommandLineTools文件夹的缘故, 重新安装CommandLineTools的时间十分漫长. 总之在安装上CommandLineTools之后rbenv就可以正常安装ruby了.

2 声望
1 粉丝
0 条评论
推荐阅读
gitlab 如何进入控制台
使用下面的命令: {代码...} 然后随便玩吧 {代码...}

ponponon阅读 898

为什么要有refreshToken
当你第一次接触的时候,你有没有一个这样子的疑惑,为什么需要refreshToken这个东西,而不是服务器端给一个期限较长甚至永久性的accessToken呢?抱着这个疑惑我在网上搜寻了一番,其实这个accessToken的使用期限...

一口鸭梨阅读 555

Spring事务失效场景
}复制代码如果@Transactional 没有特别指定,Spring 只会在遇到运行时异常RuntimeException或者error时进行回滚,而IOException等检查异常不会影响回滚。

数据先声阅读 382

封面图
5种高大上的yml文件读取方式,你知道吗?
1、Environment在Spring中有一个类Environment,它可以被认为是当前应用程序正在运行的环境,它继承了PropertyResolver接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下:person: name: hydra...

视角线阅读 368

封面图
Apache ShardingSphere在转转亿级交易系统落地实践
大促期间DB压力大,单库查询qps上万占用大量数据库资源,写性能大大降低;数据与日剧增,单库中包含非常多数据量过数亿的大表,占用空间接近服务器的容量上限;数据量太大,数据备份和恢复需要耗费很长时间,极端...

小源学算法阅读 367

推荐8个提高工作效率的IntelliJ插件
IntelliJ目前已经成为市面上最受欢迎的Java开发工具,这得益于里面非常丰富的插件机制。本文我将分享在日常开发中我经常使用的5个插件,它们可以帮助您提高工作效率。

视角线阅读 367

封面图
这几个SQL语法的坑,你踩过吗?
1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,...

一口鸭梨阅读 354

2 声望
1 粉丝
宣传栏