本文系统Centos6.5 x64


Ruby On Rails是一个用Ruby语言写的开源Web框架,和J2EE,PHP等类似。Ruby On Rails是一个非常优美的Web开发框架,并且融入了敏捷开发的精髓:约定大于配置。你会发现,它真的是一个非常优美的框架!今天我们介绍如何在Centos下搭建Ruby On Rails开发环境。


Tips:

Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)。目前支持Ruby的大多数版本,有 1.8.7,1.9.1,1.9.2和RubyEnterpriseEditon,通过RVM可以很方便的在多个Ruby版本中快速切换。RVM同时 也支持JRuby。


设 想当前工作在Ruby1.9.2+Rails3.0下,想体验最新的Rails开发版,怎么办?Gemset就是为解决这个问题而设计的,它可 以为每个Ruby版本生成多个gemsets,各个gemset相互独立,这意味着你可以很方便的切换到某个gemset下去体验一个未正式发布的gem 版本,而不会破坏当前的工作环境,完毕后,再切回到工作的gemset下即可。


大多的IDE也都很好的支持了RVM方面,可以自动识别RVM管理的Ruby版本和GemSet,方便你切换Ruby的解析环境。


1、创建普通帐号、查看当前环境环境文件;

[root@master~]#useradd-d/opt/TrubyTruby[root@master~]#echo"Truby"|passwd--stdinTruby

2、安装rvm源:

[Truby@master~]$curl-Lget.rvm.io|bash-sstable[Truby@master~]$source~/.profile[Truby@master~]$source~/.bash_profile

安装rvm后查看本地当前变化:

[Truby@master~]$ls-a....bash_history.bash_logout.bash_profile.bashrc.emacs.gnome2.gnupg.mozilla.pki.profile.rvm.zlogin.zshrc[Truby@master~]$cd.rvm/l[Truby@master.rvm]$lsarchivesconfigdocsexamplesgemshelpinstalled.atLICENSEmanpatchsetsRELEASEscriptstmpVERSIONbincontribenvironmentsgem-cachegemsetshooksliblogpatchesREADMErubiessrcuserwrappers

使用下面命令对RVM自己进行升级
$ rvm update

rvm 相关命令:

$rvminfo$rvminfo1.9.2$rvmlistknown$rvminstall1.9.2#安装ruby-1.9.2$rvminstallree#installRubyEnterpriseEdition(REE)$rvmruby-1.8.7-p160#切换1.8.7-p160为当前使用版本$rvm1.8.7-p160#同上面命令一样rvmruby-1.8.7-p160$ruby-v#查看当前Ruby版本$whichruby$rvm--defaultuse1.9.2#设置1.9.2为默认版本$rvmdefault#通过default可以快速回到默认版本$rvmlistdefault#查看当前版本设置信息$rvmreset#恢复系统默认设置$rvmlist#列出已安装的Ruby版本$rvmlistrubies#同上$rvmlistdefault#显示默认Ruby版本信息$rvmlistknown#列出RVM所支持的所有Ruby版本的信息#为ree-187的Ruby版本创建一个别名叫:reed$rvmaliascreatereedree-1.8.7-p2010.01$rvmusereed#通过别名迅速切换$rvmaliasdeletereed#删除别名$rvmaliaslist#查看所有的别名$rvmremoveruby-1.9.2-p0$rvmuninstallruby-1.9.2-p0$rvmgemsetcreaterails3#创建一个名为rails3的gemset$rvmgemsetuserails3#在当前Ruby下使用rails3这个gemset#或者直接使用这种命名,直接指定ruby和gemset的信息。$rvmuseruby-1.9.2-p0@rails3#设置默认$rvmuseruby-1.9.2-p0@rails3--default#选择使用ruby版本$rvmdefault#列出当前Ruby版本下所有gemsets的信息$rvmgemsetlist#列出所有Ruby版本下所有gemsets的信息$rvmgemsetlist_all#显示当前所使用的gemset信息$rvmgemsetname$rvmgemdir#所在位置~/.rvm/gems/ruby-1.9.2-p0@rails3$rvmgemsetdeleterails3#会让确认一次$rvm--forcegemsetdeleterails3#直接删除,没有确定步骤$rvmgemsetemptyrails3$rvm--forcegemsetemptyrails3#直接删除,没有确定步骤$rvmgemsetexportrails3.gems$rvmgemsetrails3$rvmgemsetimportrails3$rvmgemsetcopy1.8.7@rails31.9.2-head@rails3

3、安装ruby

3.1、列出已知的ruby版本

[Truby@master~]$rvmlistknown#MRIRubies[ruby-]1.8.6[-p420][ruby-]1.8.7[-head]#securityreleasedonhead[ruby-]1.9.1[-p431][ruby-]1.9.2[-p330][ruby-]1.9.3[-p551][ruby-]2.0.0[-p598][ruby-]2.1.4[ruby-]2.1[.5][ruby-]2.1-headruby-head。。。。。。

3.2、安装ruby (在安装过程中可能会提示安装其他依赖包,使用root安装其依赖的包此略;)

[Truby@master~]$rvminstall1.9.3Searchingforbinaryrubies,thismighttakesometime.Foundremotefilehttps://rvm_io.global.ssl.fastly.net/binaries/centos/6/x86_64/ruby-1.9.3-p551.tar.bz2Checkingrequirementsforcentos.Requirementsinstallationsuccessful.ruby-1.9.3-p551-#configureruby-1.9.3-p551-#download%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed10010.2M10010.2M003476700:05:090:05:09--:--:--31365Nochecksumfordownloadedarchive,recordingchecksuminuserconfiguration.ruby-1.9.3-p551-#validatearchiveruby-1.9.3-p551-#extractruby-1.9.3-p551-#validatebinaryruby-1.9.3-p551-#setupruby-1.9.3-p551-#gemsetcreated/opt/Truby/.rvm/gems/ruby-1.9.3-p551@globalruby-1.9.3-p551-#importinggemset/opt/Truby/.rvm/gemsets/global.gems....................................ruby-1.9.3-p551-#generatingglobalwrappers........ruby-1.9.3-p551-#gemsetcreated/opt/Truby/.rvm/gems/ruby-1.9.3-p551ruby-1.9.3-p551-#importinggemsetfile/opt/Truby/.rvm/gemsets/default.gemsevaluatedtoemptygemlistruby-1.9.3-p551-#generatingdefaultwrappers........

A、查询已经安装的ruby

[Truby@master~]$rvmlistrvmrubiesruby-1.9.2-p330[x86_64]=*ruby-1.9.3-p551[x86_64]#=>-current#=*-current&&default#*-default[Truby@master~]$

B、使用一个ruby版本

[Truby@master~]$rvmuse1.9.2Using/opt/Truby/.rvm/gems/ruby-1.9.2-p330

C、设置为默认版本

[Truby@master~]$rvmuse1.9.2--defaultUsing/opt/Truby/.rvm/gems/ruby-1.9.2-p330[Truby@master~]$rvmlistdefaultDefaultRuby(fornewshells)ruby-1.9.2-p330[x86_64]

D、卸载一个已安装版本

[Truby@master~]$rvmremove1.9.2ruby-1.9.2-p330-#removingsrc/ruby-1.9.2-p330..ruby-1.9.2-p330-#removingrubies/ruby-1.9.2-p330..ruby-1.9.2-p330-#removinggems....ruby-1.9.2-p330-#removingaliasesruby-1.9.2-p330-#removingwrappers....ruby-1.9.2-p330-#removingenvironments....

4、gemset的使用

rvm不仅可以提供一个多ruby版本共存的环境,还可以根据项目管理不同的gemset.

gemset可以理解为是一个独立的虚拟gem环境,每一个gemset都是相互独立的。

比如你有两个项目,一个是rails 2.3 一个是 rails 3. gemset可以帮你便捷的建立两套gem开发环境,并且方便的切换。

gemset是附加在ruby语言版本下面的,例如你用了1.9.2, 建立了一个叫rails3的gemset,当切换到1.8.7的时候,rails3这个gemset并不存在。

建立gemset

[Truby@master~]$rvmuse1.9.2Using/opt/Truby/.rvm/gems/ruby-1.9.2-p330[Truby@master~]$rvmgemsetcreaterails3ruby-1.9.2-p330-#gemsetcreated/opt/Truby/.rvm/gems/ruby-1.9.2-p330@rails3ruby-1.9.2-p330-#generatingrails3wrappers........

设定已建立的gemset做为当前环境

use 可以用来切换语言,或者gemset,前提是他们已经被安装(或者建立)

[Truby@master~]$rvmuse1.9.3[Truby@master~]$rvmuse1.9.3@rails4

并可以在list命令中看到:

[Truby@master~]$rvmlistrvmrubiesruby-1.9.2-p330[x86_64]=*ruby-1.9.3-p551[x86_64]#=>-current#=*-current&&default#*-default[Truby@master~]$rvmgemsetlistgemsetsforruby-1.9.3-p551(foundin/opt/Truby/.rvm/gems/ruby-1.9.3-p551)(default)globalrails3.1=>rails4

清空gemset中的gem

如果你想清空一个gemset的所有gem,想重新安装所有gem,可以这样

[Truby@master~]$rvmgemsetempty1.9.2@rails3.1AreyouSUREyouwishtoremovetheinstalledgemsfor/opt/Truby/.rvm/gems/ruby-1.9.3-p551@rails4?(anythingotherthan'yes'willcancel)>yesinstallinggem/opt/Truby/.rvm/gem-cache/gem-empty-1.0.0.gem--local--no-ri--no-rdoc.Successfullyuninstalledgem-empty-1.0.0Removedsuccessfully.

删除一个gemset

[Truby@master~]$rvmgemsetdeleterails3.1/opt/Truby/.rvm/gems/ruby-1.9.2-p330@rails3.1didnotpreviouslyexist.Ignoring.项目自动加载gemset

rvm还可以自动加载gemset.

例如我们有一个rails3.1.3项目,需要1.9.3版本ruby.整个流程可以这样。

rvminstall1.9.3rvmuse1.9.3rvmgemsetcreaterails3.3rvmuse1.9.3@rails3.3

下面进入到项目目录(比如redmine,此为ror项目),建立一个.rvmrc文件。

在这个文件里可以很简单的加一个命令:

rvmuse1.9.3@rails3.3

然后无论你当前ruby设置是什么,cd到这个项目的时候,rvm会帮你加载 ruby 1.9.3和rails3.3 gemset.