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

Joh*_*hir 81 ruby rubygems ruby-on-rails rvm

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

是否有可能做到这一点?我没有使用rvm.也许是时候开始了.

我试过gem install rails --version=2.3.10,但这只是确保安装了gem的版本,它没有把它放进去/usr/bin/rails.

(我已经为我的应用程序使用了bundler - 但直到现在才对操作系统级别的宝石进行任何精确控制)

Dan*_*nov 148

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

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.

  • 这似乎并不适用于所有人:`rackup _1.4.3_ --version` <br>`Rack 1.1(Release:1.4)` (2认同)

sup*_*ary 11

使用RVM

RVM允许您管理不同版本的Ruby和Gems.例如,您可以使用ruby版本安装

rvm install 1.9.2
Run Code Online (Sandbox Code Playgroud)

然后您可以使用它:

rvm use 1.9.2
Run Code Online (Sandbox Code Playgroud)

使用gemsets在每个项目的基础上使用特定的gem.

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

rvm gemset create myproject
Run Code Online (Sandbox Code Playgroud)

然后你可以这样使用它们:

rvm use 1.9.2@myproject
Run Code Online (Sandbox Code Playgroud)

自动化

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

将gem安装到gemset中

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

bundle install
Run Code Online (Sandbox Code Playgroud)

或者只是使用常规旧:

gem install mygem
Run Code Online (Sandbox Code Playgroud)

宝石将进入正确的宝石.

RVM替代品

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


Chu*_*bas 7

您可以使用RVM

然后你也可以使用Bundler,它可以很好地管理gem依赖.

在你的 Gemfile

gem "rails", "2.3.10"
Run Code Online (Sandbox Code Playgroud)

并在您的申请中

require 'rubygems'
require 'bundler/setup'
Run Code Online (Sandbox Code Playgroud)

你完成了