如何“激活”特定宝石的不同版本?

时间:2010-12-07 03:29:02

标签: ruby-on-rails ruby rubygems rvm

我想在rails 2.3.10之间切换为我的操作系统的“活动”gem,以便我可以在命令行调用它。

有可能这样做吗?我没有使用rvm。也许是时候开始了。

我尝试了gem install rails --version=2.3.10,但这只是确保安装了gem的版本,而不是将其放在/usr/bin/rails中。

(我已经为我的应用程序使用了bundler - 但到目前为止还没有对操作系统级别的宝石进行任何精确控制)

4 个答案:

答案 0 :(得分:145)

如果您的问题是运行某个版本的二进制文件,那么:

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

此模式(gem-binary _gem-version_)适用于任何gem二进制文件。

希望它有所帮助。

答案 1 :(得分:10)

使用RVM

RVM允许您管理不同版本的Ruby和Gems。您可以使用例如

安装ruby版本
rvm install 1.9.2

然后您可以使用:

rvm use 1.9.2

使用gemsets在每个项目中使用特定的宝石。

如果您想要进一步的命名空间,可以设置gemsets;将包含特定项目的特定gem的目录。

rvm gemset create myproject

那么你可以这样使用它们:

rvm use 1.9.2@myproject

自动化

要自动切换宝石,请在项目根目录中弹出 .ruby-version .ruby-gemset 文件。弹出Ruby的版本和你想在其中使用的gemset的名称,RVM将在你进入你的项目目录时选择正确的gemset。

将gem安装到gemset

如果您正在使用它,请使用bundler以常规方式将gem安装到gemset中:

bundle install

或仅使用常规旧:

gem install mygem

宝石将进入正确的宝石集。

RVM替代方案

您可能还想查看rbenv,它可以完成类似的工作。

答案 2 :(得分:7)

您可以使用RVM

然后你也可以使用Bundler来管理gem依赖关系。

Gemfile

gem "rails", "2.3.10"

并在您的申请中

require 'rubygems'
require 'bundler/setup'

你已经完成了。

答案 3 :(得分:3)

编辑:刚刚在帖子中看到了你的RVM提及。绝对是要走的路。

你将要安装RVM - 这是一个惊人的包,可以让你在同一台机器上管理不同的Rubys和不同的宝石。您可以轻松来回切换。

以下是安装指南:http://rvm.beginrescueend.com/rvm/install/

一旦你搞定了所有内容,你可以在命令行中看到所有已安装的rubys,并使用rvm list,并切换为rvm use ruby-head。 RVM将每个红宝石上的宝石分开,这应该有助于你的问题。