ruby-on-rails - 管理 Rails 的 gem 版本/依赖项

标签 ruby-on-rails ruby rubygems dependencies bundle

只是一些背景知识,我有很强的 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/

相关文章:

ruby-on-rails - Ruby on Rails CarrierWave gem 是否可以与 Ajax 配合使用?

ruby-on-rails - 错误 - "gem install rails"- 缺少 libxml2

ruby-on-rails - Postgres 数组字段上的 ActiveAdmin 过滤器

ruby-on-rails - 如何通过 Chef 安装 rvm/ruby/rails?

ruby - 如何根据电子邮件地址链接到网络邮件提供商?

ruby-on-rails - Rails 的模型 Hook 会等到数据库事务完成吗?

ruby-on-rails - 设计超时错误显示 `true`

Python 等同于 Ruby 的延续

ruby-on-rails - 如何在 slim (rails) 中生成新的 View 文件?

ruby - ruby 中的 spaceship <=> 运算符如何抛出异常?