rails バージョン 3.2.14 を使用するように rvm を指定するにはどうすればよいですか?
rvm は Rails とは何の関係もありません。rvm は、複数の Ruby インストールを管理するために使用されます。また、それぞれの Ruby インストールを複数の gemset に関連付けることができます。たとえば、ruby 1.9.3 がインストールされていて、ruby 1.9.3 用に gemsetA と gemsetB という 2 つの gemset を作成したとします。ruby 1.9.3 で gemsetA を使用するように rvm に指示すると、次のようになります。
ruby プログラムは ruby 1.9.3 で実行されます。
ruby プログラムは gemsetA の任意の gem を要求できます (これにより、プログラムは gemsetA で定義されたメソッド (またはクラス) を使用できるようになります) が、gemsetB の任意の gem は ruby プログラムからは見えません。
具体的な例を次に示します。
~$ 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 1.9.3 によって実行され、プログラミング gemset 内のすべての gem が私の ruby プログラムに要求される可能性があります。ショートカットを使用して、これらの両方のコマンドを 1 つのステップで実行できます。
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
outputを見たい場合Rails 3.2.14
は、Rails 3.2.14 gem を含む gemset に切り替えるよう rvm に指示する必要があります。
ただし、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
次の 2 つの gemset が一体何なのか疑問に思っている人のために:
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
rvm は、インストールする Ruby バージョンごとにこれら 2 つの 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 ドキュメントを参照してください。