LoginSignup
0
0

More than 5 years have passed since last update.

Install Ruby2.0 and Rails 4.0 on OX S Part 1

Posted at

本文主要介绍安装rbenv和Ruby2.0的过程。

Ruby 2.0都出来好一段时间了,咱也赶个时髦刷新一下,现在用的版本还是1.8.7呢。

安装环境:MBP OX S 10.8.3

1. 事先准备

有些东西是前提条件,需要保证完成如下两个包的安装。

1.1. Command Line Tools

编译Ruby需要c编译器,所以要在系统里提前安装Xcode并安装Command Line Tools

1.2. ruby-build

编译Ruby用的,它是一个rbenv的plugin,实际上rbenv install命令就是它提供的。

$ brew install ruby-build

2. 安装rbenv和需要的包

2.1. 什么是rbenv?

简单来说,因为Ruby的稳定版和开发版本比较多,所以有很多需要同时支持几个版本的需求,rvm和rbenv就是干这个的。
rbenv年纪小于rvm,设计之初就是以简单为主,比如连编译ruby都不是自己来做,而是使用了ruby-build。另外,更重要的是它和Bundler配合的很好,这对Rails开发者来说很重要。

2.2. 安装rbenv

mac下可以直接用brew安装rbenv,还算方便,只需如下命令即可:

$ brew install rbenv

但是,有些工作还是需要手工来做的,比如执行上面这条命令后,会打印出如下信息:

To enable shims and autocompletion add to your profile:
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

所以我们需要做的下一步就是把"if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi"这行加到~/.profile文件里,最后的profile文件可能会像这样:

$ cat .profile
# for rbenv
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

上述安装完成之后,通过如下命令就可以另起一个shell进行后续操作了:

$ exec $SHELL -l

备注:
关于rbenv的更多内容和使用方法请参考 rbenv的主页

2.3. 安装openssl等包

为了使Ruby和Rails等正常运行,需要安装openssl等包。

2.3.1. 安装openssl和readline

readline是为了在irb等输入亚洲语言的

$brew install readline openssl

2.3.2. 安装curl-ca-bundle

在命令行里执行"brew install curl-ca-bundle'即可:

$ brew install curl-ca-bundle
To use these certificates with OpenSSL:
export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt

然后,拷贝证书文件:

$ cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

重要
上面这个命令是否必须请各自尝试,根据网上资料,如果是brew安装的openssl,可能会有问题,需要执行这条拷贝命令。
我执行了这条语句,在访问https的网站时候能正常访问,详见本文最后部分。但这不一定说如果你不执行这条命令就不能正常运行。

3. 安装并设置Ruby2.0

上面的各种准备完成之后,就可以安装Ruby了。

3.1. 安装Ruby2.0包

首先,通过rbenv 命令来确认可以使用的版本都有哪些:

$ rbenv install -l | grep "2\.0\.0"
2.0.0-dev
2.0.0-p0
2.0.0-p195
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
2.0.0-rc2
rbx-2.0.0-dev
rbx-2.0.0-rc1

从上面命令结果可以看出来,2.0的版本很多,我们选择最新的p195来安装。

安装某一版本的Ruby使用rbenv install VER 即可,其中VER是版本号在这里。

安装的时候,需要指定编译选项。我们通过编译选项指定了openssl的位置。

$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.0.0-p195
Downloading ruby-2.0.0-p195.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz
Installing ruby-2.0.0-p195...
Installed ruby-2.0.0-p195 to /Users/liubin/.rbenv/versions/2.0.0-p195

重要
RUBY_CONFIGURE_OPTS是传给ruby-build的环境变量,主要是为config(编译用)设置参数。网上有资料用的不是RUBY_CONFIGURE_OPTS,而是CONFIGURE_OPTS,具体这俩个参数的区别,就是RUBY_CONFIGURE_OPTS设置的参数只会影响MRI(Matz' Ruby Implementation),只会传给Ruby,而不会给其它lib。
具体参见ruby-build的主页里对这两个参数的说明。

3.2. rehash

rbenv安装包之后,需要rehash:

$ rbenv rehash

命令很简单,但是这里我们还是简单了解下rehash是干什么的及为什么需要它。

简单来说,rbenv通过shims机制,在系统和各个版本间做个link,即解决了如何在用户输入ruby等命令后找到对应的真正的ruby执行体。
shims存放在${RBENV_ROOT}/shims下面,里面有ruby,gem,irb等命令,都是脚本文件,可以自己查看。

在两种情况下需要rehash,一是安装一个新版本的Ruby之后,第二个就是在安装某些提供了os命令(即非简单lib)的gem包,这些包会提供命令,所以会影响$PATH,所以也必须放到shims下。这两个场景,都需要进行rehash操作。

当然,每次都rehash是挺麻烦的,而且最关键最重要的是如果漏了的话会导致命令等不能执行。
还好,有这么个gem,叫做rbenv-rehash,利用它可以实现在每次安装gem后自动执行rbenv的rehash操作。

我们可以通过gem安装rbenv-rehash:

$ gem i rbenv-rehash
Successfully installed rbenv-rehash-0.3
Parsing documentation for rbenv-rehash-0.3
1 gem installed

更多关于rehash的内容,可以参考rbenv的主页里关于rehash的说明

3.3. 设定系统默认Ruby版本

系统里有多个Ruby版本存在的时候,我们需要设置一个默认的使用版本。

3.3.1. 查看当前Ruby版本

通过rbenv versions命令来查看系统已经安装的版本和当前的默认使用版本:

$ rbenv versions
* system (set by /Users/liubin/.rbenv/version)
2.0.0-p195

可见,现在版本还是原来的,而不是我们新安装的版本。

3.3.2. 设置系统的默认Ruby版本

通过rbenv global命令来设置系统默认的Ruby版本:

$ rbenv global 2.0.0-p195

再通过rbenv versions命令来确认上面的修改是否生效了:

$ rbenv versions
system
* 2.0.0-p195 (set by /Users/liubin/.rbenv/version)
$ ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]

可见,当前系统默认版本已经是Ruby2.0了。

4. 确认安装是否正确

其实主要是确认openssl是否可用,因为这个功能被很多地方用到。

irb(main):002:0> require 'openssl'
=> true
irb(main):005:0> open('https://www.google.com/').read

以上命令如果不出问题,说明安装基本正常了。

另外,可以用这句话来确认是否系统里可以正常处理YAML

require 'psych'

5. 总结

rbenv很简单,很方便。不过,话说谁没事老换Ruby版本呢?

至此,Ruby2.0的安装可以说是告一段落了,下面将会安装Rails4.0,请关注后续文章。

参考文章
1. rbenv を使って ruby 2 系 をインストール、ついでに rails4 までやってみる一部始終
2. rbenv主页

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0