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

时间:2015-04-27 04:05:07

标签: ruby dependencies gemfile

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

不,它只列出Gemfile中声明的依赖项。如果你手动安装了一些宝石而没有将它们添加到Gemfile(这不是最佳做法),那么这些宝石就不会列在你的Gemfile.lock中。

答案 2 :(得分:1)

Gemfile.lock包含Gemfile中所有gems的已解析版本,它们的依赖关系,这些依赖项的依赖关系等。一旦加载,bundler实际上阻止你加载不在Gemfile.lock中的gem,以防止你意外地依赖在宝石上而不是你的Gemfile中。

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

最后,Gemfile只涵盖了宝石的依赖关系 - 这些依赖于OS包(例如RMagick需要imagemagick),但该信息不是Gemfile的一部分。