Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是什么命令让rvm为我创建的每个新rails应用程序使用默认(如全局)gemset?_Ruby On Rails_Rvm - Fatal编程技术网

Ruby on rails 是什么命令让rvm为我创建的每个新rails应用程序使用默认(如全局)gemset?

Ruby on rails 是什么命令让rvm为我创建的每个新rails应用程序使用默认(如全局)gemset?,ruby-on-rails,rvm,Ruby On Rails,Rvm,我在安装Mac OS Lion之后安装了rvm。我面临的问题是,每当我尝试运行一个新的Rails应用程序时,它都会给我以下错误 一旦选择一个特定的rvm,问题就会得到解决$rvm gemset使用全局 我知道每个项目使用.rvmrc文件。但我不想每次创建演示项目时都继续使用这个命令。为什么每次我创建新项目时rvm不自动使用“全局”gemset 我曾经安装rvm JP:demo3 jayparteek$ rails s /Users/jayparteek/.rvm/gems/ruby-1.9.2-

我在安装Mac OS Lion之后安装了rvm。我面临的问题是,每当我尝试运行一个新的Rails应用程序时,它都会给我以下错误

一旦选择一个特定的rvm,问题就会得到解决<代码>$rvm gemset使用全局

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

我曾经安装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>'
JP:demo3 jayparteek$rails
/Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands/server.rb:3:在'require'中:没有要加载的文件--操作\u调度(LoadError)
来自/Users/jayparteek/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands/server.rb:3:in`'
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`'
来自脚本/rails:6:in'require'
来自脚本/rails:6:in`'
您可以通过以下操作为给定的ruby解释器指定“默认”gemset:

rvm use ruby-1.9.2-p0@gemsetname --default
见:和

最好为每个项目使用一个特定的gemset,以及它的特定Gemfile。如果您在GEM文件中要求'>=x.y.z',并且在一个项目中执行
捆绑更新
,而在另一个项目中不执行,则可能会出现问题

cd ProjectA
rvm gemset create projecta
rvm gemset use projecta

cd ProjectB
rvm gemset create projectb
rvm gemset use projectb
这样,尽管您通过
bundle update
将ProjectA中的gems更新为最新和最好的,但它们仍然不会针对ProjectB进行修改,从而消除了项目之间相互干扰的可能性


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

e、 g.假设您已经安装了ruby 1.9.3,并且该ruby版本有一个gem集“rails_3.2”:

# cat .rvmrc
rvm use ruby-1.9.3-p0@rails_3.2

您可以使用以下命令创建默认的gemset

rvm --default gemset use <gemsetname> 


“默认宝石”是什么意思?除非在其中安装gems,否则不应该显式使用全局gems集。根据定义,全局gemset中的所有内容都包含在该ruby的所有gemset中。这可能类似于“全局”。让我详细说明我的问题。我打开终端->进入我的“站点”文件夹并启动“$rails新应用程序”。当我按照这些步骤操作时,除非我告诉rvm要使用哪个gemset,否则会出现上述错误。它使用的是什么gemset?
action\u dispatch
gem(和
rails
)是否安装在该gemset中?如果您使用Bundler管理项目,那么您已经具备了所需的所有隔离功能。单独的gemset或不单独的gemset Bundler的行为仍将是相同的。如果每个项目使用gemset,则一个项目和gemset上的捆绑包更新无法修改其他项目/gemset中的gem版本。如果使用Bundler,它也不会使用错误的版本。这就是Bundler的全部要点。gems不需要实现该功能。bundler当然会将它们分开,但如果用户执行
gem列表
s/他将看到所有已安装的gems,而不仅仅是为特定项目安装的gems。。如果您使用gemset,您只能看到用于此项目的gemset。为什么在使用Bundler的项目中使用
gem list
?您应该使用
捆绑列表
。安装了gem(或gem的特定版本)并不意味着它会在项目中使用。不管怎样,您在回答中所说的并不是关于
gem list
,而是关于
bundle update
影响到一个同样使用Bundler的独立项目,这显然是错误的。
rvm gemset use <gemsetname> --default 
rvm --default gemset use rails4
rvm gemset use rails4 --default