对于ruby项目,我需要找到一种方法来检查我是否知道某个gem包含一些问题,我可以判断该项目是否受到影响。
我可以看到有一个Gemfile.lock
包含许多依赖信息,这很有帮助,但由于我对ruby很新,我不确定它是否包含足够的信息(比如所有依赖项,包括依赖项)依赖)
答案 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的一部分。