遵循当前的最佳实践,其中每一个的适当作用是什么?
基于我对 Bundler 和 RVM 的有限理解,它们似乎像 Rubygems 一样有自己的 gem 安装位置。另外,对于每一个,都有使用 sudo
安装到系统路径的选项。或到您的主目录。然后可以使用 Bundler(在适用的情况下,例如使用 Rails)供应 gems。
所以在我看来,现在至少有七个地方可以安装 gems:
那么,管理这一切的最佳方法是什么?我们是否使用所有三个(Rubygems、Bundler、RVM)并告诉他们都将 gems 安装到同一个位置?我们是否使用
sudo
一直,有时,还是从不?我们是否应该在生产和开发机器上使用不同的策略?在相关说明中,Bundler 和 RVM 包装器是围绕 Rubygems 的,它们是它的替代品,还是与它完全正交?
最佳答案
来自 Bundler 的 website :
Bundler makes it easy to make sure that your application has the dependencies it needs to start up and run without errors.
这意味着对于其他开发人员或另一台机器上的您来说,通过运行
bundle install
准备进一步开发或使用它是微不足道的。您拥有启动和运行所需的一切。RVM 用于在同一台机器上管理多个 Ruby 版本,并在它们之间切换。 Gemsets 是 RVM 提供的一项强大功能,可将一个应用程序/库的 gem 与系统的其余部分隔离开来。
当 RVM 和 Bundler 一起使用时,RVM 会告诉 Bundler gem 应该去哪里,然后 Bundler 将它们安装到 RVM 文件夹中。
两者(关于 RVM 案例中的 gem)都使用并依赖于 Rubygems,因此它们最接近包装器。
我个人在所有项目中都使用 Bundler 和 RVM。没有 gemset,只有 Bundler 来解决和修复问题,它没有失败。安装 gems 无需
sudo
,并在 RVM 定义的地方结束。我系统上的默认 Ruby 安装被保留下来,Rubygems 系统/用户路径没有安装任何东西
关于ruby-on-rails - Rubygems、Bundler 和 RVM 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361645/