只是一些背景知识,我有很强的 C#/静态类型背景。因此,我倾向于根据 .dll 来思考。因此,如果我在一个项目中工作,我会引用我需要的 dll,就是这样。
作为 Ruby 和 Rails 的新手,我发现我可能做错了什么。例如,我使用本地的 gem 在家里创建了一个 Rails 应用程序。使用不同的计算机(比如工作计算机)我尝试在项目上工作只是发现我使用的是不同版本的 gems。执行 bundle 安装后,我回到了工作项目。
我遇到的问题是我的 gem 库变得“困惑”。我最终得到了同一个 gem 的多个版本。这是其他人的工作方式吗?使用 gem(来自需求)时,它会默认为最新版本吗?我感觉好像我没有正确管理依赖项,尽管正如我所提到的,我是 Ruby 世界的新手。
我是否应该只包含我的依赖项,然后在每次有不同/缺少的依赖项时执行 bundle 安装?如果我想升级到新版本的 gem 会怎样?是否需要更新 bundle 使用的 gemfile 并继续使用它?
最佳答案
是的, bundler 是使用 Ruby on Rails 处理依赖关系的方式。为什么 ?首先,因为它是随附的(至少对于 3.0 版而言)。其次,因为它非常简单(不像 Java 的 maven)。
功能的非详尽列表:
- 它允许您声明一个或多个 gem 存储库以从中获取 gem
- 按环境(开发、生产...)对您的依赖项进行分组
- 指定你想要的版本
等等。有关更多信息,请查看此 http://gembundler.com/rationale.html
关于您的问题:是的,如果没有指定, bundler 将采用可用的最新版本。
此外,我要补充一个缺点:您不能根据操作系统指定 gem 版本。例如,nokogiri 有 linux 版本和 win 版本。
关于ruby-on-rails - 管理 Rails 的 gem 版本/依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374854/