【问题标题】:Why does rails ignore .bundle by default?为什么rails默认忽略.bundle?
【发布时间】:2011-08-05 23:04:16
【问题描述】:

项目 .bundle/config 的重点不就是指定与项目相关的配置吗?

【问题讨论】:

  • 您能提供更多信息吗?这个文件的内容是什么,你使用的是什么版本的 bundle 和 rails?
  • rails 3,最新的捆绑器,内容什么都不是,但是rails new foo生成的.gitignore的内容会忽略.bundle
  • 更新了我的答案看看。

标签: ruby-on-rails bundler


【解决方案1】:

bundle-configmanpage 上说:

此命令允许您与捆绑器的配置进行交互 系统。 Bundler 从本地应用程序中检索其配置 (app/.bundle/config)、环境变量和用户家 目录(~/.bundle/config),按优先级顺序排列。 因此,请确保您没有任何配置文件优先于您要使用的配置文件。

您可以自己配置此文件或使用bundle config (option) 设置选项,在不带任何选项的情况下运行bundle config 会打印当前配置。 例如,您可以像这样为 mysql gem 设置编译时间选项:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

所以是的,app/.bundle/config 用于为当前项目设置捆绑选项。

编辑: 此更改已在提交 efa85055 中添加到 Rails github 存储库。您可以查看该版本的file herecommit here

提交消息来自José Valim,并提到了您有疑问的那一行:

让 bin/rails 调用 rails/commands/application,修复生成器的使用 并更新 .gitignores。

再次编辑: 这是quote from bundler,说明为什么不应该将 .bundle 目录检入任何 VCS。

不要签入 .bundle 目录或其中的任何文件。 这些文件特定于每台特定的机器,并用于 在 bundle install 的运行之间保留安装选项 命令。

【讨论】:

  • 这是一个内容丰富的概述,但您没有回答为什么默认忽略配置的问题。 :) 我想显而易见的答案是,关键是要让个人用户控制每个项目的捆绑器行为——但事情不能变得更好,这太糟糕了,捆绑器和 rvm 在所有系统上都更加简单和一致。 ..
  • 忽略是什么意思?文档中没有提到这一点,我认为这不是预期的行为。如果您在app/.bundle/config 中设置了选项,则应该使用它们。
  • 刚刚找到了选择背后的原因。 .bundle 不是每个应用程序的配置,它用于保存安装选项,并且文件是特定于每台机器的。
  • 它是每台机器,但也是每个项目。也就是说,您可以拥有一个全局 ~/.bundle/config 来确保某些 gem 始终使用特定选项,但您可以在 app/.bundle/config 级别覆盖这些选项,以防您以特定方式构建 gem项目。
  • @xentek 项目文件夹中的文件仍然是特定于机器的,不应传输。
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多