2

我认为 Rails 3 的 Bundler 创建的 5 组文件或文件夹是:

  1. 宝石文件
  2. Gemfile.lock
  3. .bundle/配置
  4. 供应商/捆绑
  5. 供应商/缓存

还有吗?对于它们中的每一个,是否应该将它们添加到存储库中? Gemfile而且Gemfile.lock,我认为是这样,因为这就是让每个人都使用相同版本的 gems 的原因。对于.bundle/config,我认为对于开发,我们可能应该添加它,因为它说“不要使用共享宝石”(我认为这意味着系统宝石)......等等。我读了一个文档说如果它是部署,然后使用.gitignore忽略这个文件,因为它在每台部署机器上可能不同(如何?)......所以这是否意味着只在部署机器上,使用本地.gitignore来忽略它,而在开发中,不要忽略它?

vendor/bundle文件呢?它们可以包含已编译的二进制文件,因此如果它们是由 Macbook 开发人员添加到项目中的,那么其他使用 Linux 的开发人员是否会受到影响?(或者当项目被克隆到使用 Linux 的部署服务器时)。

怎么样vendor/cache?它包含所有.gem文件。它们可以包含任何二进制文件吗?还是他们总是为用户做的bundle install --local,而且他们都只包含文本文件,所以他们会在 gem 目录中生成适当的二进制文件,如果有的话,所以是否将这个文件夹添加到项目中是可选的,尽管如果我们运行bundle package以生成此文件夹,其目的可能是让每个人都使用此文件夹创建 gem,而不是从 ruby​​gems.org 中提取它?

4

2 回答 2

1
  • Gemfile and Gemfile.lock should be part of your source control. It'll allow other developers and yourself easily intall the required gems for your project on other systems.

  • .bundle/config should be different for each machine and shouldn't be part of source control.

  • vendor/bundle: should not be part of your source control as it's gems required to run your app. As you noted in your question about the binaries in the folder. They should be recompiled for each system they're run on.

  • vendor/cache: Don't add this to source control. It's a cache file that could be used to install missing gems faster if they're already present here.

Note that you can choose the location of the bundle and cache directories by editing the .bundle/config and then they won't be install in your app directory if you don't want them there.

于 2010-11-26T04:41:13.633 回答
1

是的, Gemfile 和 Gemfile.lock 都应该在版本控制之下。不确定其他人(我的系统上没有它们)。

Gemfile 指示您的项目中使用了哪些 gem(可能还​​有哪些版本),而 Gemfile.lock 指示您当前使用的版本。通过在 Git 中使用这两者,您将确保所有项目开发人员都使用相同的 gem 版本,这将防止许多问题,例如“它在我的机器上工作,我不知道为什么它在你的机器上不工作”(因为 2开发人员正在使用同一 gem 的不同版本,这可能有错误)。

于 2010-11-26T01:47:51.103 回答