What is Ruby ルビィ(误)
其实是这个:
Ruby is…
A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
最近接触了jekyll,所以需要在macOS上搭建一个Ruby的环境。折腾后发现坑其实不少,最后使用了rbenv + ruby-build的方法。
macOS配置Ruby的问题
Ruby版本多
首先,我的macOS里已经安装过多个Ruby。去年研究rails的时候直接使用homebrew安装过Ruby,但是实际上安装Xcode后应该已经安装了一个命令行的Ruby。如果还购买过mac的Server.app(128RMB的那个),那个app里还会自带一个Ruby,情况就更加复杂了……
gem权限乱
其次,之前安装的gem似乎有权限问题,并不是在用户目录下执行安装等各种操作。如果使用sudo权限安装,安装好的各种包也是root权限,就需要永远sudo下去,这个显然不合适。
对于问题2,stackoverflow上有一个不错的解决方法,手动配置gem使用user-install,然而不能完全解决问题一。于是从rails官网挪了一份文档,使用rbenv + ruby-build
来解决这个问题。
安装rbenv前
卸载rvm
之前如果安装过rvm,需要先卸载
1 | rvm implode |
卸载完成后,rvm会提醒用户,检查.bashrc
,.bash_profile
等bash配置文件(或zsh对应的配置文件)里还有没有相关路径,以及/etc/
,~
下还有没有残余目录,都需要手动删除。
卸载已安装的gem包
之前使用gem安装的一些包,最好也先卸载掉,使用
1 | gem uninstall -aIx |
如果使用sudo权限安装过包,则上述语句无法卸载root权限的包,需要再做一步
1 | sudo gem uninstall -aIx |
如果之前配置过gem使用user-install,则还需要在~/.gem
中有和没有相关配置时各执行一遍,确保卸载干净。
卸载brew安装的Ruby
1 | brew uninstall ruby |
安装rbenv和ruby-build
1 | brew update # 可选 |
然后向~/.bash_profile
里添加信息
1 | echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile |
对于zsh(oh-my-zsh)用户,因为会从~/.zshrc
里读取,所以就在zshrc里加了一行source ~/.bash_profile
然后安装Ruby
1 | rbenv install 2.3.1 |
因为是编译安装,所以等待时间稍长。安装完成后可以用ruby -v
检查一下版本是不是刚刚安装的2.3.1。
使用gem安装需要的包
以jekyll为例
1 | gem install jekyll |
为了确保rbenv可以执行刚刚安装的包, 一定要做
1 | rbenv rehash |
这样rbenv才能“看到”新安装的包。
安装完成后就可以测试一下刚安装的包jekyll -v
,并尝试调用。
需要注意,以上所有步骤应该都不需要sudo。如果其中某些步骤还提示权限问题,请仔细检查步骤。
Tips:关于gem换源
之前使用的是淘宝源,现在已交给Ruby China维护。
因此原来配置的ruby.taobao.org
,现在要改成gems.ruby-china.org
才能用w