【问题标题】:How do I "activate" a different version of a particular gem?如何“激活”特定 gem 的不同版本?
【发布时间】:2011-05-21 08:42:41
【问题描述】:

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

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

我尝试了gem install rails --version=2.3.10,但这只是确保安装了该版本的gem,它没有将它放入/usr/bin/rails

(我已经在我的应用程序中使用了 bundler ——但直到现在还不需要在操作系统级别对 gem 进行任何精确控制)

【问题讨论】:

    标签: ruby-on-rails ruby rubygems rvm


    【解决方案1】:

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

    你会想要安装RVM——这是一个很棒的包,可以让你在同一台机器上管理不同的 Ruby 和不同的 gem 集。您可以轻松地来回切换。

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

    一切就绪后,您可以在命令行中使用rvm list 查看所有已安装的ruby,并使用rvm use ruby-head 进行切换。 RVM 将每个红宝石上的宝石分开,这应该有助于解决您的问题。

    【讨论】:

      【解决方案2】:

      您可以使用RVM

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

      在你的Gemfile

      gem "rails", "2.3.10"
      

      在您的应用程序中

      require 'rubygems'
      require 'bundler/setup'
      

      你就完成了。

      【讨论】:

      • 除此之外,如果您希望某些脚本仅“看到”您的 Gemfile 中声明的版本,请将它们作为“bundle exec ”运行,例如bundle exec warble
      【解决方案3】:

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

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

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

      希望对你有帮助。

      【讨论】:

      • 哦,这让我在办公室度过了一个漫长的周末,谢谢!
      • 这似乎并不适用于所有人:rackup _1.4.3_ --version
        Rack 1.1 (Release: 1.4)
      • rackup 仅打印发布版本(参见 Rack.versionRack.release github.com/rack/rack/blob/master/lib/rack.rb)。试试gem install rack --version=1.3 && rackup _1.3.0_ --version,它会打印出Rack 1.1 (Release: 1.3)
      • 以防万一,它是这样工作的:which rackup | xargs cat
      【解决方案4】:

      使用 RVM

      RVM 允许您管理不同版本的 Ruby 和 Gems。您可以使用例如安装一个 ruby​​ 版本

      rvm install 1.9.2
      

      然后您可以使用它:

      rvm use 1.9.2
      

      通过 gemsets 在每个项目的基础上使用特定的 gem。

      如果你想要更多的命名空间,你可以设置 gemsets;包含特定项目的特定 gem 的目录。

      rvm gemset create myproject
      

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

      rvm use 1.9.2@myproject
      

      自动化

      要自动执行 Gem 切换过程,请在项目根目录中弹出 .ruby-version.ruby-gemset 文件。弹出 Ruby 的版本和你想在其中使用的 gemset 的名称,当你 cd 进入项目目录时,RVM 会选择正确的 gemset。

      将 gem 安装到 gemset 中

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

      bundle install
      

      或者只是使用普通的旧的:

      gem install mygem
      

      宝石将放入正确的宝石组中。

      RVM 替代品

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

      【讨论】:

      • rvm 的问题是(正如您所提到的)它处理 ruby​​ 版本和 gem 版本。 rbenv 只处理 ruby​​ 版本,让 bundler 处理 gem 版本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      相关资源
      最近更新 更多