Mac OS系统下配置ruby及安装sass问题总结
2019-06-11
前情提要
公司特别老的项目正在做重构,但是架不住产品提需求,所以硬着头皮就改了好几年没动过的老代码。改起来感觉还不错,没出啥乱子,但是吧,这个不符合事物发展的规律…果然,到了打包生产环境的静态资源文件的时候就出错了😢。编写样式时用Sass预处理,因此打包的时候需要转为浏览器能够理解的css文件。打包工具采用grunt,开发系统是Mac OS。郁闷啊,需要预装ruby和sass的环境才能运行。掉坑里爬了两天才出坑,今天逞着等后段出接口文档的空档,赶紧写下来记录一下,也算是这坑没有白踩了😄
brew安装ruby
啥是brew?我没有咋安装?戳我戳我(●’◡’●)
Linux和OS系统自带了ruby
> ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin16]
但是如果你直接使用gem(RubyGems是Ruby的一个包管理器)会报错
> gem install sass
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
尝试一下sudo命令
> sudo gem install sass
Building native extensions. This could take a while...
ERROR: Error installing sass:
ERROR: Failed to build gem native extension.
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.11.1/ext/ffi_c
...
...
截取了核心的错误提示。也就是错误提示里面:
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.11.1/ext/ffi_c
当然也可以设置写权限,使用系统自带ruby。但是存在破坏系统环境的危险而且不必要,我们完全可以安装一个Local环境用于开发(和造作)。所以我们使用brew安装ruby。
> brew search ruby
==> Formulae
chruby jruby rbenv-bundler-ruby-version ruby-completion
ruby@2.4 chruby-fish mruby ruby ✔ ruby-install ruby@2.5
...
...
如果你的ruby这里有一个小✔那表示你其实已经成功安装了ruby那么就不需要执行接下来的install命令,如果没有✔那么赶紧执行install还等什么!
> brew install ruby
如果你想要重现安装ruby,那么可以使用reinstall命令
> brew reinstall ruby
配置PATH
安装好了看看提示,其实提示已经非常清楚了,但是我一开始安装成功后没认真看提示,又兜兜转转一大圈终于回到这里,然后真的是欲哭无泪😣以后真的要认真看提示了,可能就是出坑的光明大道。
...
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/2.6.0/bin
You may want to add this to your PATH.
ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and
installing another version in parallel can cause all kinds of trouble.
If you need to have ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
...
关键句子在这:
If you need to have ruby first in your PATH run:
echo ‘export PATH=”/usr/local/opt/ruby/bin:$PATH”‘ >> ~/.zshrc
如果安装了zsh的小伙伴可以按照这个配置到.zshrc文件里面,但是我们还有一个通用的配置方法,接着看。
> echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
这个是我们的环境变量,每个path通过一个:分隔。
这个环境变量保存在什么文件里面呢?在/etc/paths里面。那我们可以将刚刚的ruby访问路径配置到这个文件里面,就可以成功访问本地ruby而非系统ruby啦~
但是注意⚠️这里还有一个小坑。路径的读取是从上往下(从前往后),所以我们要把本地ruby的访问路径配置到系统ruby的访问路径前面,才能正确访问我们的本地ruby。好啦好啦,接下来跟着做。
> sudo vi /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
~
~
我们使用了vim打开这个文件,再按一下 i 代表insert,就可以插入我们的新路径啦~
插入新路径后,变成了这样⬇️
/usr/local/opt/ruby/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
好啦~重启命令行吧~然后再试试
> ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin16]
> echo $PATH
/usr/local/opt/ruby/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
wow!~ ruby的版本号变了!PATH也更新啦~
安装sass
终于啊终于!我们可以安装sass啦!废话少说,敲代码!
> gem install sass
...
Successfully installed sass-3.7.4
...
sass安装成功啦!~~
呼呼呼~
好久没写文章啦,在此献上一篇踩坑泪文。希望以后的自己能够认真看提示👀