ruby-on-rails - Rubygems、Bundler 和 RVM 之间的关系

标签 ruby-on-rails rubygems passenger bundler rvm

遵循当前的最佳实践,其中每一个的适当作用是什么?

基于我对 Bundler 和 RVM 的有限理解,它们似乎像 Rubygems 一样有自己的 gem 安装位置。另外,对于每一个,都有使用 sudo 安装到系统路径的选项。或到您的主目录。然后可以使用 Bundler(在适用的情况下,例如使用 Rails)供应 gems。

所以在我看来,现在至少有七个地方可以安装 gems:

  • Rubygems 系统路径
  • Rubygems 用户路径
  • RVM 系统路径
  • RVM 用户路径
  • Bundler 系统路径
  • Bundler 用户路径
  • 供应商(每个应用程序)

  • 那么,管理这一切的最佳方法是什么?我们是否使用所有三个(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/

    相关文章:

    ruby-on-rails - Phusion错误:Sass::Util:Module的未定义方法 `has?'

    ruby-on-rails - 每当 gem : I set :output but the logfile doesn't show up where I'd expect it to

    ruby-on-rails - 如何在 Rails 4.2 中添加 JSON 文件导出功能

    ruby-on-rails - 推送到特定 Git 存储库时排除特定文件

    ruby - 如何从 `gem` 中获取不在 `lib` 目录下的文件?

    node.js - Nginx Phusion 乘客 : "passenger_log_file" directive is not allowed

    javascript - 将内容添加到模板的最佳方法是什么?

    ruby - Sinatra 和 Grape API 在一起?

    ruby-on-rails - 乘客('Bundler:RubyVersionMismatch')

    ruby-on-rails - 在生产环境中配置 Redis + Sidekiq