应用程序构建中的宝石没有捆绑器

时间:2013-03-16 20:20:30

标签: ruby-on-rails bundler

我知道如果应用程序使用bundler,我可以通过查看Gemfile轻松找到所有安装的gems。

说,我正在查看不使用bundler的Rails 3应用程序,我怎么知道它使用的是什么宝石?

由于

1 个答案:

答案 0 :(得分:2)

如果它没有使用Bundler,我不知道确定使用的每个宝石的明确方法。您可以在整个应用程序树中搜索require语句,但这不会显示大多数语句。 Gems在内部也需要其他gem,并且会安装自己的依赖项,但这些gem不会直接从你的应用程序的require语句中引用。

如果应用程序运行且测试通过(意味着您至少安装了所有必需的gem),您可以通过创建Gemfile来解决问题,列出您知道所需的宝石,然后通过bundle exec运行您的测试(或应用程序本身),这将确保只有Gemfile中列出的宝石可见。然后你会得到与遗失宝石相关的失败,并且可以将它们添加到Gemfile,直到一切正常。一旦它通过bundle exec工作,您就会知道您已经捕获了那里的所有要求。

如果您正在使用RVM,您可能会发现为应用创建gemset以及应用根目录中的.rvmrc文件有助于利用RVM的自动gemset切换和Bundler集成。这将使维持宝石状态更容易。

在任何情况下,在应用处于工作状态的情况下运行gem list都会向您显示可能正在使用的所有宝石,但不会将其限定为gemset或包含在{ {1}},您还会看到因其他原因而安装的宝石,这些原因可能与您应用的依赖关系无关。