如何指定 rvm 以使用 rails 版本 3.2.14 ?
rvm 与 rails 无关。rvm 用于管理多个 ruby 安装。您的每个 ruby 安装都可以与多个 gemset 相关联。例如,假设您安装了 ruby 1.9.3,并为 ruby 1.9.3 创建了两个 gemset:gemsetA 和 gemsetB。如果您告诉 rvm 将 ruby 1.9.3 与 gemsetA 一起使用,则意味着:
您的 ruby 程序将由 ruby 1.9.3 执行。
您的 ruby 程序可能需要 gemsetA 中的任何 gem(然后允许您的程序使用 gemsetA 中定义的方法(或类)),但您的 ruby 程序无法看到 gemsetB 中的任何 gem。
这是一个具体的例子:
~$ rvm list
rvm rubies
ruby-1.8.7-p370 [ i686 ]
* ruby-1.9.3-p194 [ x86_64 ]
=> ruby-2.0.0-p0 [ x86_64 ]
ruby-2.0.0-p247 [ x86_64 ]
# => - current
# =* - current && default
# * - default
~$ rvm use 1.9.3-p194
Using /Users/7stud/.rvm/gems/ruby-1.9.3-p194
.
~$ rvm gemset list (This lists only the gemsets for the current ruby version)
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
programming
rails3tutorial
rails4
~$ rvm gemset use programming
Using ruby-1.9.3-p194 with gemset programming
在我这样做之后,我的 ruby 程序将由 ruby 1.9.3 执行,并且编程 gemset 中的任何 gem 都可以被要求到我的 ruby 程序中。您可以使用快捷方式一步执行这两个命令:
rvm use ruby 1.9.3-p194@programming
您只需将 ruby 版本和 gemset 与它们之间的“@”结合起来。
但是当我输入 rails -v 我得到这个:
$ rails -v
Rails 4.0.0
这是因为当前 gemset 包含 rails 4.0.0 的 gem。如果您想查看$ rails -v
输出Rails 3.2.14
,则需要告诉 rvm 切换到包含 rails 3.2.14 gem 的 gemset。
但是,您可以使 rvm 自动切换到适合您的 rails 项目的 rails 版本和 gemset。在您的 Gemfile 中,在 ruby 版本之后添加注释:
ruby '2.0.0'
#ruby-gemset=railstutorial4_gems
然后,每当您切换到包含您的 rails 项目的目录时,rvm 会自动将当前的 ruby 切换到 ruby 2.0.0,并将当前的 gemset 切换到 railstutorial4_gems。如果您从 Rails 应用程序中更改目录,rvm 会将当前的 ruby 和当前的 gemset 改回原来的样子。
我只是一个 Rails 初学者,但这里是我用来创建新项目的步骤,这些步骤直接来自 railstutorial 书 ( http://ruby.railstutorial.org/ruby-on-rails-tutorial-book )
1)
.../rails_projects$ rvm use <ruby version here>@<new gemset name here> --create
e.g.
.../rails_projects$ rvm use ruby-1.9.3-p194@myapp_gemset --create
2)
.../rails_projects$ gem install rails --version 3.2.14
因为当前 gemset 是 myapp gemset,所以该命令将 rails 3.2.14 gem 安装到 myapp gemset 中。
3)
.../rails_projects$ rails new myapp
.../rails_projects$ cd myapp
当前的 gemset 仍然是 myapp_gemset。
4)
.../rails_projects/myapp$ rails -v
Rails 3.2.14
如果有人想知道以下两个宝石到底是什么意思:
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
rvm 为您安装的每个 ruby 版本创建这两个 gemset。安装 ruby 版本后,如果您没有自己为该 ruby 版本创建 gemset,并且安装了 gem,那么 gem 将进入(默认)gemset。而且,如果您希望所有 gemset 都包含某个 gem,您可以切换到全局 gemset 并在那里安装 gem。
更新: --------
为了保持与其他 ruby 版本管理器的兼容性,您可以在不同的文件而不是 Gemfile 中为您的项目指定 ruby 版本和 gemset 名称:
$ cd ~/rails_projects/myapp
~/rails_projects/myapp$ echo 2.0.0 > .ruby-version
~/rails_projects/myapp$ echo myapp_gemset > .ruby-gemset
当您cd
进入项目目录时,您仍然会获得相同的自动 ruby 版本和 gemset 切换。请参阅此处的 rvm 文档。