【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

众所周知,Mac 开机自带 ruby 环境,位于/Library/Ruby系统资源库中,通过终端执行 ruby -v可以看到 ruby 的版本号:

% ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

不过平常我们使用 ruby 的时候不建议使用系统自带 ruby 环境,因为会对系统文件目录进行读写,试错成本太大,不适合个人学习使用。那问题来了,在这种情况下,我们如何玩转 ruby 呢?

解决办法:使用 Homebrew 安装 ruby 。

Homebrew 的安装复制官网提供的命令行执行即可:https://brew.sh

使用 Homebrew 安装 ruby:

$ brew install ruby

安装成功后,发现ruby的版本还是之前系统默认的:

% ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

不要急,这是因为系统自带的 ruby 环境级别太高,导致我们自行安装的 ruby 环境失效。

解决方法(一)

笔者的解决办法是找到 ruby 的安装位置,直接略过环境变量执行 ruby 命令。

找到 Homebrew 的软件安装目录:/usr/local/Cellar/

找到 ruby 的安装目录 /usr/local/Cellar/ruby/2.6.5

找到 ruby 的命令目录 /usr/local/Cellar/ruby/2.6.5/bin/

在使用自行安装的 ruby 时只需要带上目录前缀即可,示例:

% /usr/local/Cellar/ruby/2.6.5/bin/ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]

使用 gem 的方式:

% /usr/local/Cellar/ruby/2.6.5/bin/gem -v
3.0.6

假设使用 gem 安装了如 jekyll 的软件,执行 jekyll 命令依旧无效:

% jekyll --version
zsh: command not found: jekyll

同理,只需要找到 jekyll 的命令目录,那如何找到呢?

执行 gem env命令可以找到有效的帮助:

% /usr/local/Cellar/ruby/2.6.5/bin/gem env
RubyGems Environment:
- RUBYGEMS VERSION: 3.0.6
- RUBY VERSION: 2.6.5 (2019-10-01 patchlevel 114) [x86_64-darwin19]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.6.0
- USER INSTALLATION DIRECTORY: /Users/username/.gem/ruby/2.6.0
- RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
- GIT EXECUTABLE: /usr/local/bin/git
- EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.6.0/bin
- SPEC CACHE DIRECTORY: /Users/username/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.6.5/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-19
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.6.0
- /Users/username/.gem/ruby/2.6.0
- /usr/local/Cellar/ruby/2.6.5/lib/ruby/gems/2.6.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Library/apache-maven-3.6.1/bin
- /Library/redis-5.0.5/src
- /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /usr/local/MacGPG2/bin

找到 gem 的执行目录即 EXECUTABLE DIRECTORY 为 :

/usr/local/lib/ruby/gems/2.6.0/bin

尝试执行 jekyll 命令:

% /usr/local/lib/ruby/gems/2.6.0/bin/jekyll --version
jekyll 4.0.0

惊喜的发现我们已经成功的执行了命令。

但是,如果你使用的是 jekyll 你会发现还是会有一些命令执行异常,因为这些命令的执行过程中依旧使用的环境变量里的 ruby 和 gem。

解决方法(二)

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

将自行安装的 ruby 添加到环境变量中,并保证优先级大于系统自带的 ruby。

系统的环境变量加载顺序为:

/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc

依次通过 cat 命令查看,找到 /etc/paths中的 /usr/bin路径中存放着系统的 ruby 命令执行程序,我们将 brew 安装的 ruby 的 bin 目录插入到/etc/paths文件的第一行:

% cat /etc/paths
/usr/local/opt/ruby/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

然后使用 source 命令使之生效:

% source /etc/profile

检验 ruby 是否切换成功:

% ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]

可以看到,ruby 环境已经切换为 brew 安装的。

事情到这里并没有结束,还需要将 gem 安装的软件的执行目录加载到环境变量中,通过执行 gem env可以找到 EXECUTABLE DIRECTORY 目录的位置,和上面步骤相同,添加到 /etc/paths中:

% cat /etc/paths
/usr/local/opt/ruby/bin
/usr/local/lib/ruby/gems/2.6.0/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

使用 source命令使之生效即可。

接下来,你可以放心在自己的 Mac 上使用 ruby 和 gem 了。

版权声明

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

Mac上使用brew另装ruby和gem的新玩法的更多相关文章

  1. Mac上安装brew

    用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址  http ...

  2. Mac上使用brew update会卡住的问题

    Mac上使用brew update会卡住的问题 brew默认的源是Github,会非常慢,建议换为国内的源.推荐中科大的镜像源,比较全面. 解决方案 Homebrew Homebrew源代码仓库 替换 ...

  3. Mac上安装brew 包管理工具

    Mac 上的包管理工具对于开发者来说是一件非常方便的工具,能够有效的对包进行管理. 所以这篇博客就来简单的讲一下brew 的安装和一些基础命令. brew 全称叫做Homebrew . 1. 首先来说 ...

  4. 【mac】mac上使用brew 安装速度慢/每次使用brew 都会卡在updating homebrew不动/更换homebrew的镜像源

    有没有出现一下这样的情况: 如果有,请继续往下走 1.打开mac的命令窗口,键入如下命令 cd /usr/local/Homebrew 2.更换homebrew的默认源[更换为中科大的镜像源] git ...

  5. Mac上使用brew安装Nginx服务器

    使用brew安装nginx $ brew install nginx 启动nginx sudo nginx 访问localhost:8080 发现已出现nginx的欢迎页面了.  为方便期间,做个软 ...

  6. Mac上使用brew安装nvm来支持多版本的Nodejs

    brew方式 如果机器没有安装过node,那么首先brew install nvm安装nvm. 其次需要在shell的配置文件(~/.bashrc, ~/.profile, or ~/.zshrc)中 ...

  7. Mac上brew&thrift安装 以及在thrift架构下,自己新作了maven的小例 Demo

    1.缘由 前几天偶尔在网上看到thrift的信息,其内容和作用极大的引起了我的兴趣,因为我也是做iOS开发的,通过在网上的查询发现信息虽然很多实用的很少,容易误导他人,经过自己的成功实践,做了笔录,为 ...

  8. MAC 上brew 更新 出错

    在MAC上brew update的时候出现报错:Error: /usr/local must be writable! 错误,在该文章中也给出解决办法(sudo chown -R $(whoami) ...

  9. mac 上安装服务,查看服务,重启和关闭

    首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...

随机推荐

  1. Django ListView DetailView等基于类的视图如何添加装饰器?

    场景: Django开发中,如果我们使用了类视图,如:ListView.DetailView.UpdateView等,这时我们又想要对这个视图添加一个装饰器,来实现某种功能,这时候该怎么处理呢? 环境 ...

  2. 【补充说明】Gauge框架在JS中的简单应用

    这里做一个总结 由于公司架构要用node来替代Java的部分服务,所以就研究了这个自动化测试框架:它可以很方便的测试我们的接口,而且还能使用断言[assert]来判断是否是我们预期的结果. 但是呢,由 ...

  3. tmux简单使用

    tmux简单使用 Tmux ("Terminal Multiplexer"的简称), 是一款优秀的终端复用软件,类似 GNU screen,但比screen更出色.tmux来自于O ...

  4. 一文彻底搞懂BERT

    一.什么是BERT? 没错下图中的小黄人就是文本的主角Bert ,而红色的小红人你应该也听过,他就是ELMo.2018年发布的BERT 是一个 NLP 任务的里程碑式模型,它的发布势必会带来一个 NL ...

  5. 关于替换“c2a0”十六进制字符的方法

    一.背景:在爬取网络小说生成的文件中,发现有些空格没法替换,使用十六进制编辑器查看,发现这些空格字符的十六进制值是“c2a0”,其来源是网页控制的特殊字符,这是一个叫做Non-breaking spa ...

  6. 【Hadoop】hdfs,剖析文件上传

    文件上传原理图 剖析文件写入 1.客户端(client)通过对DistributedFileSystem对象调用create()来新建文件: FSDataOutputStream outputStre ...

  7. Java实现 LeetCode 650 只有两个键的键盘(递归 || 数学)

    650. 只有两个键的键盘 最初在一个记事本上只有一个字符 'A'.你每次可以对这个记事本进行两种操作: Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的). ...

  8. Java中继承的详细用法

    关于上一篇构造方法后的继承方法 构造方法链接 extends是继承的关键字 例: 下面的代码BB和CC就是AA的子类 允许一个父类有多个子类,但不允许一个子类有多个父类 /*final*/ class ...

  9. Java实现哥德巴赫猜想

    验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和.要求输入一个整数,输出这个 数能被分解成哪两个质数的和. eg : 14 14=3+11 14=7+7 public class T ...

  10. Java实现 蓝桥杯 历届试题 翻硬币

    问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...