2015-04-27 61 views
0

对于ruby项目,我需要找到一种方法来检查我是否知道gem包含一些问题,我可以判断项目是否受到影响。`Gemfile.lock`是否包含ruby项目的所有依赖信息?

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

回答

1

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

1

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

1

Gemfile.lock包含Gemfile中所有gem的解析版本,它们的依赖关系,这些依赖关系的依赖关系等。一旦加载,bundler实际上会阻止您加载gemfile.lock中的gem,以防止您意外取决于不在您的Gemfile中的宝石。

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

最后的Gemfile中仅涵盖那些宝石的依赖 - 这可能依赖于OS包(例如RMagick需要ImageMagick的),但这些信息是不是Gemfile中的一部分。

相关问题