"Gemfile.lock"是否包含ruby项目的所有依赖项信息



对于ruby项目,我需要找到一种方法来检查我是否知道gem包含一些问题,我可以判断项目是否受到影响。

我可以看到Gemfile.lock包含许多依赖信息,这很有帮助,但由于我对ruby很陌生,我不确定它是否包含足够的信息(比如,所有依赖关系,包括依赖关系的依赖关系)

是的,它包含当前为当前项目安装的所有依赖项。

否,它只列出在Gemfile中解密的依赖项。如果您手动安装了一些gem,但没有将它们添加到Gemfile中(这不是最佳实践),那么这些gem不会列在Gemfile.lock中。

Gemfile.lock包含Gemfile中所有gem的解析版本、它们的依赖项、这些依赖项的依赖项等。一旦加载,bundler实际上会阻止您加载不在Gemfile.lock中的gem,以防止您意外地依赖不在Gemwile中的gems。

一个例外可能是gem,它提供的工具实际上并没有被应用程序加载。例如,我在开发中使用了mailcatcher gem——这是一个运行虚拟SMTP服务器的gem,并提供了一个允许您查看发送的电子邮件的web UI。这不在我的Gemfile中,严格地说,你不需要安装它——你可以运行一个实际的电子邮件服务器或使用:测试交付模式,但你可能仍然认为它是开发环境的一部分。

最后,Gemfile只涵盖了属于gem的依赖项——这些依赖项可能取决于操作系统包(例如RMagick需要imagemagik),但这些信息不是Gemfile的一部分。

最新更新