特定の宝石の異なるバージョンを「アクティブ化」するにはどうすればよいですか?


85

コマンドラインで呼び出すことができるように、OSの「アクティブな」gemとしてレール2.3.10を切り替えたいと思います。

これを行うことは可能ですか?私はrvmを使用していません。多分それは始める時間です。

試しましたgem install rails --version=2.3.10が、gemのバージョンがインストールされていることを確認するだけで、インストールされません。/usr/bin/rails

(私はすでにアプリにbundleを使用していますが、これまでOSレベルでgemを正確に制御する必要はありませんでした)

回答:


155

問題が特定のバージョンのバイナリを実行することである場合は、次のようにします。

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

このパターン(gem-binary _gem-version_)は、任意のgemバイナリで機能します。

それが役に立てば幸い。


1
ああ、これは私にオフィスでの長い週末を救ってくれました、ありがとう!
Lachlan McD

2
それはそれらすべてのために働くようには思われません:rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
クロエ2013年

1
Rackupは、リリースバージョンのみを出力します(Rack.versionおよびRack.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)
Daniel Vartanov 2013年

そして、念のために、ここではそれがどのように動作するかです:which rackup | xargs cat
ダニエルVartanov

ダニエルに感謝します。非常に便利です
ルート

12

RVMを使用する

RVMを使用すると、RubyとGemsのさまざまなバージョンを管理できます。たとえば、を使用してルビーのバージョンをインストールできます

rvm install 1.9.2

その後、以下を使用して使用できます。

rvm use 1.9.2

ジェムセットを使用して、プロジェクトごとに特定のジェムを使用します。

さらに名前空間が必要な場合は、gemsetを設定できます。特定のプロジェクトの特定のgemを含むディレクトリ。

rvm gemset create myproject

その後、次のように使用できます。

rvm use 1.9.2@myproject

オートメーション

宝石の切り替え処理を自動化するには、ポップ・バージョン.ruby.ruby-gemsetプロジェクトのルートにあるファイルを。RubyのバージョンとRuby内で使用するgemsetの名前をポップすると、プロジェクトディレクトリにcdするときに、RVMが正しいgemsetを選択します。

gemsetへのgemのインストール

使用している場合は、bundleを使用して通常の方法でgemをgemsetにインストールします。

bundle install

または単に通常の古いものを使用する:

gem install mygem

宝石は正しい宝石セットに入れられます。

RVMの代替

同様の仕事をするrbenvをチェックすることもできます。


1
rvmの問題は、(おっしゃるように)Rubyバージョンとgemバージョンを処理することです。rbenvはrubyバージョンを処理するだけで、bundleにgemバージョンを処理させます。
daslicious 2015

7

RVMを使用できます

次に、Bundlerを使用することもできますその後、宝石の依存関係をに管理。

あなたの中で Gemfile

gem "rails", "2.3.10"

そしてあなたのアプリケーションで

require 'rubygems'
require 'bundler/setup'

これで完了です。


これに加えて、一部のスクリプトでGemfileで宣言されたバージョンのみを「表示」する場合は、「bundle exec <script-name>」として実行します。例:bundle exec warble
rustyx

3

編集:投稿でRVMの言及を見たところです。間違いなく行く方法。

RVMをインストールしたいと思うでしょう-それはあなたが同じマシン上で異なるRubyと異なるgemのセットを管理することを可能にする素晴らしいパッケージです。簡単に切り替えることができます。

インストールガイドは次のとおりです:http//rvm.beginrescueend.com/rvm/install/

すべてが起動したら、たとえば、コマンドラインでwithを使用して、インストールされているすべてのrubyを確認しrvm list、を使用して切り替えることができますrvm use ruby-head。RVMは、各Rubyの宝石を別々に保持します。これは、質問に役立つはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.