29

ここに私の地元の宝石があります:

$ gem list

*** LOCAL GEMS ***

actionmailer (4.0.0, 3.2.14)
actionpack (4.0.0, 3.2.14)
activemodel (4.0.0, 3.2.14)
activerecord (4.0.0, 3.2.14)
activerecord-deprecated_finders (1.0.3)
activeresource (3.2.14)
activesupport (4.0.0, 3.2.14)
arel (4.0.0, 3.0.2)
atomic (1.1.13)
builder (3.1.4, 3.0.4)
bundler (1.3.5)
bundler-unload (1.0.1)
erubis (2.7.0)
hike (1.2.3)
i18n (0.6.5)
journey (1.0.4)
json (1.8.0)
mail (2.5.4)
mime-types (1.24)
minitest (4.7.5)
multi_json (1.7.9)
polyglot (0.3.3)
rack (1.5.2, 1.4.5)
rack-cache (1.2)
rack-ssl (1.3.3)
rack-test (0.6.2)
rails (3.2.14)
railties (4.0.0, 3.2.14)
rake (10.1.0)
rdoc (3.12.2)
rubygems-bundler (1.2.2)
rubygems-update (2.0.7)
rvm (1.11.3.8)
sprockets (2.10.0, 2.2.2)
sprockets-rails (2.0.0)
thor (0.18.1)
thread_safe (0.1.2)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (0.3.37)

しかし、私が入力するrails -vと、これが得られます:

 $ rails -v
Rails 4.0.0
 $ which rails
/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails

rails バージョン 3.2.14 を使用するように rvm を指定するにはどうすればよいですか?

前もって感謝します

4

7 に答える 7

57

次のように、特定のバージョンの Rails で新しい Rails アプリを作成できます。

rails _3.2.14_ new myApp
于 2013-08-17T14:59:44.180 に答える
49

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 に指示すると、次のようになります。

  1. ruby プログラムは ruby​​ 1.9.3 で実行されます。

  2. 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 -voutputを見たい場合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 ドキュメントを参照してください。

于 2013-08-17T15:38:19.907 に答える
23

見つかったパス/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/railsは、rvm を適切に使用しているときに標準の rvm インストールで見つかった適切なパスではありません。次のように表示されます。/Users/polonium/.rvm/gems/ruby-2.0.0-p247/bin/rails

正しく機能させるには、次のフローを試してください。

rvm use 2.0.0
rvm gemset empty
rvm use @rails3 --create 
gem install rails -v "~>3.2"
rvm use @rails4 --create
gem install rails -v "~>4"

このようにして、この 2 つのレールのインストールを次の方法で切り替えることができます。

rvm use 2.0.0@rails3
rails -v             # rails 3.2...
rvm use 2.0.0@rails4
rails -v             # rails 4.0...
于 2013-08-17T15:18:13.740 に答える
5

あなたがすべきこと: gem install 'rails' -v '3.2.13'

クリーンな gemset を使用する必要があります。rvm を使用している場合は、以下を試すことができます。

rvm gemset の作成 rvm gemset の使用

きれいな gemset ができたので、レールをインストールします。

gem install rails -v '3.2.13'

そしてRailsアプリを作成し、

レールの新しい app_name

于 2014-02-01T12:02:02.820 に答える
0

最初に、使用するルビー バージョンであることを確認して、グローバル gemset を確認してください。

$ruby -v

次に、global gemset に切り替えます (global gemset はすべての gemset に適用されるため、必ずクリーンでユニバーサルな状態に保つ必要があります... またはグローバルであるため、この名前が付けられています)。

$rvm gemset use global

その後、Harsha が入力して言及した「railties」gem のように、それに影響を与える可能性のある gem の gem リストを確認します。

$gem list

グローバル gemset は、他のすべての gemset に影響を与える偶発的な gem によって設定される場合があります。置き忘れた宝石を見つけた場合は、単純にアンインストールできます

$gem uninstall examplegem 

または、その gem の特定のバージョンの場合は、バージョンを引用符で囲んで -v を渡します

$gem uninstall examplegem -v"3.2.1"

また、異なる gemset 間で変更するための RVM の作成と使用に関する 7stud のコメントを読んでください。

于 2014-05-14T06:11:28.610 に答える