2014-12-25 更新。
之前国外有人写过博客:How to install Ruby on Rails in Ubuntu 12.04 LTS
我也是借鉴了这个链接里的过程,作者还特意写了个安装脚本,我试过脚本,不好用,还是建议一步一步装,更稳妥。
下面是我总结的安装过程。
先安装一些必备组件
$ sudo apt-get install apache2 curl git libmysqlclient-dev mysql-server nodejs
Rails 是基于Ruby的Web开发框架,安装它之前,需要先安装Ruby.
Ubuntu1404默认是没有附带Ruby的,启动命令行(Ctrl+Alt+T),输入ruby -v ,会提示还没安装。
这时不要急着 apt-get install ruby . 这种安装法没有好处,真正开发起来不方便,且版本不好管理。
有个推荐的方法是先安装Ruby版本管理器--RVM (Ruby version manager), 然后再用它来安装Ruby,
它的好处是可以安装管理Ruby的多个不同版本,且可以任意切换。
$ curl -L https://get.rvm.io | bash -s stable
安装好之后,检查安装Ruby的需求条件:
$ rvm requirements --autolibs=enable
然后加载rvm的环境设置
$ source ~/.rvm/scripts/rvm
加载rvm环境,是为了在以后的步骤中正常使用 rvm, 你也可以不做这一步,而是设置一下终端(推荐的方式),
菜单:编辑-配置文件首选项,勾选 "以登录shell方式运行命令“,然后重新打开终端。
以上的 $ source ~/.rvm/scripts/rvm 和 设置终端 的原因和目的是一样的,因为rvm及经它安装的ruby和相关库都安装在了 用户的HOME目录,而不是系统的/usr/bin目录, 当"以登录shell方式运行命令“时,会把用户HOME目录的环境设置加载到上下文中,这样rvm及ruby的命令就能顺利使用了。
接下来再安装一些开发环境会依赖的库:
$ sudo apt-get install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
现在用RVM安装Ruby:
安装前可运行 $ rvm list known 查看一下可安装的ruby版本.
这里假设要安装2.0,就运行 $ rvm install 2.0.0
你也可以安装Ruby的其他版本,如 $ rvm install 2.1.5
如果你安装了多个版本,可运行 $ rvm list 列出已安装的所有ruby版本。你可用use和--default来指定使用的版本.
指定本次使用的ruby版本: $ rvm use 2.0.0
指定默认使用的ruby版本: $ rvm --default 2.0.0
( rvm 管理 gemset 参考 http://rvm.io/gemsets/)
Rails是个Ruby库,是个gem,使用gem命令安装它。
安装rails之前,最好换一下gem的源,因为默认的源 https://rubygems.org/ 比较慢(在美国),有时候会被墙,可换成国内淘宝网的源。
gem源的操作如下:
列出当前的源:$ gem sources
删除默认的源:$ gem sources -r https://rubygems.org/
添加淘宝的源:$ gem sources -a http://ruby.taobao.org/
更新源缓存:$ gem sources -u
现在安装rails:
$ gem install rails --version 4.0.0 --no-ri --no-rdoc
以上指定了安装的rails版本4.0,且不要安装文档。如果不加参数的话 (即 gem install rails),会默认安装rails的最新版本(写本文时rails最新版本是 4.2),且会安装文档。
你可以安装多个不同的rails版本,运行 $ gem list --local rails 能看到已安装的所有rails版本,
当要使用指定版本的rails创建应用时,需在命令中加入版本参数,并用下划线括起版本,
例如用4.0版本创建一个示例应用: $ rails _4.0.0_ new sample_app
提醒:rails 相关库的版本很关键,不要想当然地认为高版本会兼容低版本。
(个人认为rails最大的一个缺点就在于 高低版本不兼容,每次新版本 API和用法都不一样,害苦了很多人)
另外,《Agile Web Development with Rails 4》一书中有两处错误,
分别是Ajax一节Gemfile中的 gem 'jquery-ui-rails' 和 登录一节Gemfile中的 gem 'bcrypt-ruby','~> 3.1.2'