如何切换到旧版本的rails

15 ruby ruby-on-rails

我正试着追查2011年写的一本旧书.

因此,从2011年11月开始随机挑选3.1.3版本.

如何在RVM中切换到该版本?

目前有Rails 4.0.0.beta1版本......

请不要建议将它放在Gemfile中,因为有许多其他依赖项处理起来太麻烦,因此如果我只是切换,我假设它意味着其他依赖项将被处理同时也是,对吧?

UPDATE

**-s-MacBook-Pro:agile **$ rails -v
Rails 4.0.0.beta1
**-s-MacBook-Pro:agile **$ gem install rails -v 3.1.3
Successfully installed rails-3.1.3
1 gem installed
**-s-MacBook-Pro:agile **$ rvm gemset create rails 313
gemset created rails    => /Users/**/.rvm/gems/ruby-1.9.3-p392@rails
gemset created 313  => /Users/**/.rvm/gems/ruby-1.9.3-p392@313
**-s-MacBook-Pro:agile **$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin10.8.0]
**-s-MacBook-Pro:agile **$ rvm 1.9.3p392-head@rails313
Unknown ruby interpreter version: '1.9.3p392'.
**-s-MacBook-Pro:agile **$ 
Run Code Online (Sandbox Code Playgroud)

再次更新

**-s-MacBook-Pro:agile **$ rvm gemset use 313
Using ruby-1.9.3-p392 with gemset 313
**-s-MacBook-Pro:agile **$ rails -v
/Library/Ruby/Site/1.8/rubygems/dependency.rb:296:in `to_specs': Could not find 'rails'     (>= 0) among 2 total gem(s) (Gem::LoadError)
from /Library/Ruby/Site/1.8/rubygems/dependency.rb:307:in `to_spec'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_gem.rb:47:in `gem'
from /usr/bin/rails:18
**-s-MacBook-Pro:agile **$ 
Run Code Online (Sandbox Code Playgroud)

Rya*_*cox 24

首先,卸载您拥有的Rails版本:

gem uninstall rails

接下来,安装所需的Rails版本,如下所示:

gem install rails -v 3.1.12

有几种方法可以同时"安装".正如Joe Frambach建议的那样,您可以在VM中安装Rails 4.您还可以安装RVM - Ruby enVironment Manager - 并使用单独的gemsets来保持Rails的两个版本.但如果你只是在学习,你可能不想打扰这个.

编辑: @ Shadwell的回答是正确的,虽然它可以使用一些扩展,我将在这里做:

> rvm gemset create rails3
> rvm gemset use rails3
> gem install rails -v 3.1.12
> rails my_new_app
Run Code Online (Sandbox Code Playgroud)

  • 如果你有rvm,不需要卸载,只需使用gemset:https://rvm.io/gemsets/basics/ (3认同)

sam*_*man 9

我不小心安装了rails版本4.1.7但我们的项目需要rails版本4.1.6之后我用这个命令卸载了rails:

4.1.7

然后使用以下命令安装rails版本4.1.6:

4.1.6

但是当我运行gem uninstall rails它的版本仍然是4.1.7

通过运行gem install rails -v 4.1.6我在该列表中看到存在的包名称是rails -v 在它之后我用这个命令删除它:

$ gem uninstall railties

Select gem to uninstall:
 1. railties-4.1.6
 2. railties-4.1.7
 3. All versions
>
Run Code Online (Sandbox Code Playgroud)

我输入2和gem卸载它.在我尝试之后4.1.7我给了4.1.6


Sha*_*ell 6

看来您已经在使用 RVM 了。为不同的 Rails 版本创建 gemset:

> rvm gemset create rails3
> rvm gemset use rails3
> bundle install
Run Code Online (Sandbox Code Playgroud)

然后您将只能获得安装在该宝石集中的宝石。我也很想为 Rails4 创建一个 gemset,而不是让不在 gemset 中的 gem 到处乱跳。然后,您可以在它们之间进行切换,无论rvm gemset use您想要切换哪一个。

这里有更多关于 gemset 的内容,也值得在rvmrc上阅读,因为这样你甚至不必切换 gemset。