Gemfile.lock 在 Rails 中使用?

Posted

技术标签:

【中文标题】Gemfile.lock 在 Rails 中使用?【英文标题】:Gemfile.lock Use in Rails? 【发布时间】:2012-03-01 18:27:12 【问题描述】:

Rails 中“Gemfile.lock”的目的是什么? 我一直在寻找,但找不到满意的答案。

【问题讨论】:

最好的资源绝对是文章"Clarifying the Roles of the .gemspec and Gemfile"。阅读它会澄清你对这个话题的所有疑惑。 【参考方案1】:

您应该阅读bundler gem 中的所有文档:http://gembundler.com/

GEMFILE.LOCK

当您运行 bundle install 时,Bundler 将保留全名和 您使用的所有 gem 的版本(包括 gem 的依赖项 在 Gemfile(5)) 中指定的文件保存到名为 Gemfile.lock 的文件中。

Bundler 在所有后续调用 bundle install 时都使用这个文件, 这保证您始终使用相同的确切代码,即使您的 应用程序跨机器移动。

由于依赖解析的工作方式,即使是看似很小的 更改(例如,对依赖项的点发布的更新 Gemfile(5)) 中的 gem 可能会导致完全不同的 gem 需要满足所有依赖项。

因此,您应该检查您的 Gemfile.lock 到版本控制。 如果您不这样做,则检查您的存储库的每台机器 (包括您的生产服务器)将解决所有依赖项 再次,这将导致不同版本的第三方代码 如果 Gemfile(5) 中的任何 gem 或其任何 依赖项已更新。

【讨论】:

【参考方案2】:

Gemfile.lock 确保您的应用程序上的其他开发人员以及您的部署环境使用与您刚刚安装的完全相同的第三方代码。

【讨论】:

以上是关于Gemfile.lock 在 Rails 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

如何在协作上下文中处理捆绑器更新(Gemfile.lock)?

Gemfile.lock 是不是应该包含在 .gitignore 中?

变基时 Gemfile.lock 中的冲突

了解 Gemfile.lock 文件