我最近创建了一个新的Rails项目,我相信在生成应用程序之前,我已经为它创建了gemset。
但当我遇到错误时,我会收到这样的消息:
File /.rvm/gems/ruby-1.9.3-p194@project_1/gems/activerecord-3.2.8/lib/active_record/relation/finder_methods.rb
尽管我在project_2
。所以理论上应该是ruby-1.9.3-p194@project_2
而不是project_1
。
造成这种情况的原因是什么?我该如何解决?
谢谢。
附言:我正在使用RVM。
编辑1:
我运行了rvm gemset list
,这是输出:
project_2$ rvm gemset list
gemsets for ruby-1.9.3-p194 (found in /Users/marcamillion/.rvm/gems/ruby-1.9.3-p194)
project_1
=> project_2
project_3
编辑2:
我只是在project_2
目录中运行了gem install rails
,在我为该项目创建了.rvmrc
文件之后,我验证了它确实专门为该项目使用了gemset。然而,当我再次生成错误时,我仍然看到project_1
中对gemset的引用。
编辑3:
rvm current
:的输出
$ rvm current
ruby-1.9.3-p194@project_2
编辑4:
尽管如此,当我在与rails s
相同的终端窗口中运行rvm current
时,我会看到:
$ rvm current
ruby-1.9.3-p194@project_1
那么,我现在和将来如何在所有终端窗口中设置宝石集呢?
您需要告诉RVM要使用哪个gemset。试试这个:
rvm gemset use project_2
如果有效,那么您可能希望在project_2的根目录中创建一个.rvmrc
文件,以便在您进入目录时自动切换到该gemset:
cd /path/to/project_2
rvm --rvmrc --create 1.9.3@project_2
这将在/path/to/project_2
中创建一个.rvmrc
。cd
从目录中取出并返回,它会提示您是否信任.rvmrc
文件。默认情况下,它只会在第一次询问您。
编辑:
需要注意的是,在创建新的.rvmrc
时,需要在所有打开的终端会话(包括rails s
和rails console
)中从项目目录中cd
。否则,应用程序将继续使用project_1
中的gemset。