我知道如果应用程序使用bundler,我可以通过查看Gemfile轻松找到所有安装的gems。
说,我正在查看不使用bundler的Rails 3应用程序,我怎么知道它使用的是什么宝石?
由于
答案 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}},您还会看到因其他原因而安装的宝石,这些原因可能与您应用的依赖关系无关。