2012-01-14 33 views
1

的rbenv文档指出您可以使用gemsets插件来Sandbox中的宝石,如果你不使用捆绑:rbenv or bundler gemset sandboxing?

Manage gemsets. Bundler is a better way to manage application dependencies. If you have projects that are not yet using Bundler you can install the rbenv-gemset plugin. 

不过,我使用的捆绑,当我的项目之间切换,具有不同gemsets我需要重新捆绑。当我使用rvm时,由于.gemsets文件,这很简单。

在捆绑器中是否有沙箱功能,我不知道或者我误解了文档?

回答

4

打捆使用GemfileGemfile.lock文件,在根本上,做出由您透过这可能与rbevn使用垫片的方式做bundle exec

+2

但是,如果我在两个使用捆绑软件gemfiles的项目之间切换,我会有一大堆与当前项目无关的宝石。因此,捆绑包gemset不等同于gemset沙箱 – Coderama 2012-01-15 03:07:24

+0

但是,您也不会在同一台机器上无缘无故地在多个gemset中安装重复的宝石。它有什么危害?使用bundler&bundle exec不会让你访问那些“其他”宝石 – cpjolicoeur 2012-01-15 17:55:50

+0

@Coderama即使有沙箱,每次需要升级Gemfile中的宝石时,都会有闲置的旧宝石四处闲逛。我想有人可以编写一个清理脚本来使用当前的Gemfile.lock清理当前的沙箱...但为什么要麻烦? – Kelvin 2012-05-11 19:40:54

5

我发现这个明确,证据充分的解决方案:

Setting up and installing rbenv, ruby-build, rubies, rbenv-gemset, and bundler

现在,当创业板安装(请参阅“捆扎机”一节)的东西它会去你的helloset宝石区。

您可以结合使用多个gemsets。

此设置的最大好处是可以使每个项目使用不同版本的不同版本的宝石。

阅读标题为Enable RVM-style “gemsets” (optional)的部分。

它使用gentsets的rbenv插件:https://github.com/jamis/rbenv-gemset

更新2012年8月12日
我正在使用它来管理两个不同版本的Ruby项目,并分离出几组宝石。它运作良好。

1

尝试使用chgems与Bundler。对于RubyGems,chgems就像chroot。它产生了一个新的子壳,其中PATH,GEM_HOMEGEM_PATH更新为使用$project/.gem/$ruby/$version作为主要的GEM_HOME。由于所有gem都安装在项目目录中,所以在项目完成后清理就像rm -rf $project/一样简单。