如何从Ruby 1.9.2降级到Ruby 1.8.7以运行Rails 2.0.2

时间:2011-01-05 05:09:05

标签: ruby-on-rails ruby ruby-on-rails-3 uninstall downgrade

我想在Ubuntu 10.04操作系统上降级我安装的Ruby版本(Ruby 1.9.2),以便我可以使用适当版本的Ruby 1.8.7来运行Rails 2.0.2。我正在使用旧版本的Rails用于项目目的。

如果我在Ruby 1.9.2中使用Rails 2.0.2,则会给出一个错误,指出无法将Enumerator转换为数组。

我以为我可以使用rvm,但我不确定它是否适合降级。

当我使用命令 rvm list

时,我在终端中得到以下内容
mgj@pc146724-desktop:~$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p399]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p302]
[ruby-]1.8.7-head
[ruby-]1.9.1-p243
[ruby-]1.9.1[-p376]
[ruby-]1.9.1-p429
[ruby-]1.9.1-head
[ruby-]1.9.2-preview1
[ruby-]1.9.2-preview3
[ruby-]1.9.2-rc1
[ruby-]1.9.2-rc2
[ruby-]1.9.2[-p0]
[ruby-]1.9.2-head
ruby-head

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.5.1
jruby-1.5.2
/home/mohnish/.rvm/config/known 

使用 dpkg -l |命令在安装的ruby软件包列表中获得以下内容grep ruby​​

mgj@pc146724-desktop:~$ dpkg -l | grep ruby
ii  libdbm-ruby                                4.2                                             DBM interface for Ruby
ii  libdbm-ruby1.8                             1.8.7.249-2                                     DBM interface for Ruby 1.8
ii  libgdbm-ruby                               4.2                                             GDBM interface for Ruby
ii  libgdbm-ruby1.8                            1.8.7.249-2                                     GDBM interface for Ruby 1.8
ii  libopenssl-ruby                            4.2                                             OpenSSL interface for Ruby
ii  libopenssl-ruby1.8                         1.8.7.249-2                                     OpenSSL interface for Ruby 1.8
ii  libreadline-ruby                           4.2                                             Readline interface for Ruby
ii  libreadline-ruby1.8                        1.8.7.249-2                                     Readline interface for Ruby 1.8
ii  libruby1.8                                 1.8.7.249-2                                     Libraries necessary to run Ruby 1.8
ii  libtcltk-ruby                              4.2                                             Tcl/Tk interface for Ruby
ii  libtcltk-ruby1.8                           1.8.7.249-2                                     Tcl/Tk interface for Ruby 1.8
ii  rdoc                                       4.2                                             Generate documentation from ruby source file
ii  ruby                                       4.2                                             An interpreter of object-oriented scripting 
ii  ruby-elisp                                 4.2                                             Emacs-lisp ruby-mode for Ruby
ii  ruby-full                                  4.2                                             Ruby full installation
ii  ruby1.8                                    1.8.7.249-2                                     Interpreter of object-oriented scripting lan
ii  ruby1.8-dev                                1.8.7.249-2                                     Header files for compiling extension modules
ii  ruby1.8-elisp                              1.8.7.249-2                                     ruby-mode for Emacsen
mgj@pc146724-desktop:~$ ^C

我是否需要卸载Ruby 1.9.2,然后才新安装Ruby 1.8.7或者我可以切换版本吗?如果我可以切换版本,请指导我如何设置从Ruby 1.9.2到Ruby 1.8.7的路径。或者,如果有其他方式,请告诉我。

如果我必须卸载Ruby 1.9.2然后重新安装Ruby 1.8.7,请告诉我如何进行操作。我尝试了以下命令来卸载Ruby 1.9.2,但它似乎没有找到Ruby 1.9.2包。

sudo aptitude remove ruby

sudo aptitude remove ruby 1.9.2p0

sudo purge ruby

sudo aptitude purge ruby 1.9.2p0

当我检查安装的当前版本的Ruby时,它显示:

mgj@pc146724-desktop:~/Downloads/rubygems_postextract/rubygems-1.4.1$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

mgj@pc146724-desktop:~/Downloads/rubygems_postextract/rubygems-1.4.1$ which ruby
/home/mgj/.rvm/rubies/ruby-1.9.2-p0/bin/ruby

感谢您的帮助.. !!

3 个答案:

答案 0 :(得分:39)

RVM的全部意义在于您可以拥有多个版本的Ruby并轻松切换它们。

rvm install 1.8.7 #or some specific version - choose from the rvm list known
rvm use 1.8.7
rvm gemset create rails202 #create a gemset called "rails202" for Ruby 1.8.7
rvm 1.8.7@rails202 #make the gemset the current selection
gem install rails -v 2.0.2 #install rails (just for this gemset!)
#now, we have a gemset called "rails202" in Ruby 1.8.7.
#anytime we want to use it, we do:
rvm 1.8.7@rails202
#create as many gemsets needed, eg for rails 3.0.3 on Ruby 1.8.7 we can do the
#similar as above. Then to use the new gemset just do:
rvm 1.8.7@rails303
#et voila! we are now using Rails 3.0.3 on Ruby 1.8.7 !

答案 1 :(得分:7)

使用RVM并节省数周的痛苦。

您可以使用多个Ruby版本,每个版本都有自己独立的宝石。这样你可以分别在前者和后者上安装与Rails 2和Rails 3宝石同时安装1.8.7和1.9.2。

安装Ruby版本就像键入rvm install 1.9.2rvm install 1.8.7一样简单。要在两者之间切换:rvm 1.9.2rvm 1.8.7

您可以使用rvm --default 1.9.2rvm --default 1.8.7设置默认Ruby。

RVM不会触及您当地的Ruby,也不会触及它的宝石。您可以随时切换回它:rvm system

答案 2 :(得分:0)

source~ / .rvm / scripts / rvm

rvm reload(重新加载最新安装的rvm)

rvm install 1.8.7

rvm使用1.8.7 - 默认