2013-03-16 44 views
0

我知道,如果應用程序使用打包器,我可以通過查看Gemfile輕鬆找到所有安裝的寶石。應用程序中的寶石沒有打包器

說,我在看Rails 3應用程序不使用捆綁器,我怎麼知道它使用什麼寶石?

感謝

回答

2

如果它不使用捆紮機,我不知道一個明確的方法來識別正在使用的每一個寶石。您可以搜索整個應用程序樹中的require語句,但這不會顯示大部分語句。寶石在內部也需要其他寶石,並且會安裝自己的依賴項,但這些寶石將不會直接從您的應用程序的require聲明中引用。

如果應用的工作原理和測試通過(這意味着你已經至少得到了所有安裝了所需的寶石),你可以通過創建一個Gemfile,列出你知道需要的寶石,然後運行測試處理這個問題(或應用程序本身)通過bundle exec,這將確保只有Gemfile中列出的寶石是可見的。然後你會得到與失蹤寶石有關的失敗,並可以將它們添加到Gemfile,直到它全部正常工作。一旦它通過bundle exec工作,你就會知道你已經掌握了所有的需求。

如果您使用的是RVM,可能會發現爲您的應用程序創建gemset以及應用程序根目錄中的.rvmrc文件有助於利用RVM的自動gemset切換和Bundler集成。這會讓維持寶石狀態的過程變得更容易。

在任何情況下,在工作狀態下的應用程序運行gem list會告訴你所有的寶石,它可能是使用,但並不作用域的寶石或包裹在bundle exec,你還會看到那個寶石由於其他原因而被安裝,這些原因可能與您應用的依賴關係無關。

相關問題