2011-11-21 36 views
3

我在安装Mac OS Lion后安装了rvm。我面临的问题是每当我尝试运行一个新的Rails应用程序时,它都会给我下面的错误。什么命令让rvm为我创建的每个新的rails应用程序使用默认(如全局)gemset?

一旦选择特定的rvm,问题就会得到解决。 $ rvm gemset use global

我知道每个项目使用.rvmrc文件。但我不想每次创建演示项目时都继续使用此命令。为什么rvm在每次创建新项目时都会自动使用“全局”gemset?

我用this documentation来安装rvm。

JP:demo3 jayparteek$ rails s 
/Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands/server.rb:3:in `require': no such file to load -- action_dispatch (LoadError) 
    from /Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands/server.rb:3:in `<top (required)>' 
    from /Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands.rb:48:in `require' 
    from /Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands.rb:48:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
+1

你是什么意思“默认gemset”?除非在其中安装宝石,否则不应该明确使用全局gemset。根据定义,全局gemset中的所有内容都在该ruby的所有gemsets中。 –

+0

这可能像'全球'。让我详细谈谈我的问题。我打开终端 - >去我的'网站'文件夹和启动'$ rails新应用程序'。当我遵循这些步骤,我得到上述错误,除非我告诉rvm使用哪个gemset。 – user917158

+0

开始使用什么gemset?是否在该gemset中安装了'action_dispatch' gem(和'rails')? –

回答

7

您可以通过执行指定一个给定的Ruby解释器“默认”宝石:

rvm use [email protected] --default 

见:http://beginrescueend.com/gemsets/using/http://beginrescueend.com/gemsets/basics/

它可能是一个更好的主意,用特定的宝石对于您的每个项目,以及它的特定Gemfile。如果您需要在您的Gemfiles“> = XYZ”可能发生的问题,而你在一个项目做一个bundle update,但不是在其他...

cd ProjectA 
rvm gemset create projecta 
rvm gemset use projecta 

cd ProjectB 
rvm gemset create projectb 
rvm gemset use projectb 

这样,虽然你在项目A通过升级宝石bundle update最新最好的,他们仍然不会修改ProjectB - 消除项目之间的干扰的可能性。


您还可以将.rvmrc文件添加到目录,例如,你的项目目录。然后,RVM将使用.rvmrc文件中列出的ruby-version和gem set作为所有子目录的默认值。

例如假设你已经红宝石1.9.3安装和有色宝石“rails_3.2”为红宝石版本:

# cat .rvmrc 
rvm use [email protected]_3.2 
+0

如果您使用Bundler来管理项目,您已经拥有了所有需要的隔离。独立的gemsets或Bundler的行为仍然是一样的。 –

+0

如果您使用每个项目的gemsets,则一个项目上的软件包更新和gemset无法修改其他项目/ gemsets中的gem版本 – Tilo

+0

而且如果使用Bundler,它将永远不会使用错误的版本。这是Bundler的重点。 Gemsets不需要实现该功能。 –

0

您可以使用下面的命令使默认宝石

rvm --default gemset use <gemsetname> 

rvm gemset use <gemsetname> --default 

例如,如果你已经rails4宝石,那么你可以把它违约

rvm --default gemset use rails4 

rvm gemset use rails4 --default 
相关问题