欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RVM切换Ruby和Rails版本

程序员文章站 2022-07-15 11:48:56
...
目的是运行多个ruby和rails版本
apt-get install git-core ...3个,参考我博客其他文章
apt-get curl
安装RVM详见:https://rvm.beginrescueend.com/rvm/install/照着做。
如果是Multi-user,rvm会被自动安装到/usr/local/rvm,否则会被安装到/home/zj/.rvm
在source ~/.bash_profile 这是刷新设置。如果这一步报错:-bash: /root/.bash_profile: No such file or directory
解决:touch .bash_profile
vim .bash_profile内容如下:
注意下面的$HOME你echo下看看,如果是Multi-user,则$HOME/.rvm应该被替换为:/usr/local/rvm
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
改好后再source ~/.bash_profile
其实这个是使得RVM在命令行中有了启动项。产看所有启动项用echo $PATH
返回:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/rvm/bin
发现有/usr/local/rvm/bin说明是OK的
RVM安装好后安装RUBY,然后安装rails
rvm install 1.9.3
rvm use 1.9.3
rvm gemset create rails3.1.0
rvm --default use 1.9.3@rails3.1.0#设为默认,但我的server上没能成功,和安装有关?
rvm current 当前
rvm gemset list列出所有gemset



下面看我另外一篇文章,介绍RVM的。


目前rails版本3.1,而locomotiveCMS要求rails3.0.10
这时rvm就上场啦。
安装见:https://rvm.beginrescueend.com/rvm/install/
使用见https://rvm.beginrescueend.com/gemsets/basics/
简述如下,下面都是命令:
$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer 
)
如果是包curl未安装,就apt-get install curl
如果还报错,就按照http://help.github.com/linux-set-up-git/的说明把git安装一下。

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
$ source .bash_profile

这时候rvm装好了,但一些RVM需要的一些东东还没装。
$ rvm notes
查看并按照
$rvm requirements
的说明安装:
zj@zhangjian:/usr/bin$ sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core 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

安装ruby1.9.2
$ rvm 1.9.2 这是切换到1.9.2下,并且是global模式,在这下面安装的gem被1.9.2下的所有gemset共享。我建议你把openssl也装以下,否则locomotiveCMS用到的一些gem中会报错:no such file to load — openssl。到时後你得$ rvm remove 1.9.2再重装,要花半个多小时。
方法如下:
$ rvm pkg install openssl 这个RVM不认系统中的openssl,要通过这样的方式装到archive中才行,这句话如果报错,说明$rvm requirements做好,按照上面的写法做好。
$ rvm remove 1.9.2
$ rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr
$ rvm list 查看目前有的ruby版本
$ rvm 1.9.2 --default 设置它为默认版本

安装rails 3.0.10
https://rvm.beginrescueend.com/rubies/rubygems/ 这个链接是描述了rvm和rubygems的关系,有个命令很好用:$ rvm gemdir,可以显示当前gem install会被装到何处。
注意:不要再安装rubygems了,因为在安装rvm的时候会自动把rubygems安装好!如gem install总是报错:
$ gem install rails -v 3.1.0
ERROR:  Could not find a valid gem 'rails' (= 3.1.0) in any repository
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    too many connection resets (http://production.s3.rubygems.org/latest_specs.4.8.gz)
或者dependencies找不到的错误

如果报如上错误,我不知到是什么原因,在一台新机器上报这个错,我怀疑是我在安装UBUNTU的时候下载更新,后来又取消了,只是瞎猜。在另外一台机器上不报。所以我就把那台好的机器上的硬盘拆下来放到新机器上使用,居然没有任何的不兼容,ubuntu系统真好呀,:-)
然后:
$ gem install rails --version=3.0.10 注意不能加sudo,因为rvm会把他们装到/home/zj/.rvm/gems/ruby-1.9.2-p290@rails3.0.10下,RVM就是利用这种手段使得各版本保持独立性。$ rails -v出现以下错误就是因为加了sudo
/usr/local/lib/site_ruby/1.8/rubygems/dependency.rb:247:in `to_specs': Could not find rails (>= 0) amongst [bundler-1.0.18] (Gem::LoadError)
	from /usr/local/lib/site_ruby/1.8/rubygems/dependency.rb:256:in `to_spec'
	from /usr/local/lib/site_ruby/1.8/rubygems.rb:1210:in `gem'
	from /usr/bin/rails:18


$ rvm gemset create rails3.0.10 必须创建gemset,然后才可以用!显示:
'rails3.0.10' gemset created (/home/zj/.rvm/gems/ruby-1.9.2-p290@rails3.0.10).
[b]$ rvm use 1.9.2@rails3.0.10[/b] 切换至,去掉use也是一样的
$ rvm 1.9.2@rails3.0.10 --default 设为默认gemset
$rvm info 

global下的是通用的,共享的,因此,有时候我们会rvm 1.9.2,来gem install,这样就能够共用了。
如果要几个ruby版本同时安装,则用rvm 1.8.7,1.9.2 do gem install ,否则rvm不要加,表示在当前ruby版本或者gemset下安装。切忌不要用任何sudo
详见https://rvm.beginrescueend.com/gemsets/basics/

参考文章:
https://rvm.beginrescueend.com/gemsets/using/
http://www.douban.com/note/92636671/