rbenv或bundler gemset沙盒?

时间:2012-01-14 22:06:25

标签: ruby bundler rbenv

rbenv文档指出,如果您不使用bundler,可以使用gemsets插件对您的gem进行沙盒化:

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.

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

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

4 个答案:

答案 0 :(得分:5)

我发现了这个清晰,记录良好的解决方案:

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

  

现在当你安装宝石(参见下面的“Bundler”部分)时,它会进入你的地狱宝石区域。

     

您可以将多个gemsets与其结合使用。

     

此设置的最大好处是使每个项目都能使用一组不同版本的宝石。

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

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

2012年12月12日更新我使用它来管理具有不同版本的Ruby的两个项目,以及单独的宝石集。效果很好。

答案 1 :(得分:4)

bundler使用GemfileGemfile.lock文件,在本能中为您通过前缀为bundle exec

的命令访问的特定项目制作“gemset”

答案 2 :(得分:1)

这可能与rbenv使用垫片的方式有关。你可能想要退房 https://github.com/carsomyr/rbenv-bundler

答案 3 :(得分:1)

尝试将chgems与Bundler一起使用。对于RubyGems,chgems就像chroot。它会生成一个新的子shell,其中PATHGEM_HOMEGEM_PATH已更新为使用$project/.gem/$ruby/$version作为主要GEM_HOME。由于所有宝石都安装在项目目录中,因此在项目之后进行清理就像rm -rf $project/一样简单。