2011-11-10 64 views
2

短版本:如何確定哪些文件或寶石需要某個文件什麼是加載某個模塊? (的ActiveResource)

的時間長一點..

我有一個Rails 3.0.3/mongoid應用程序,所以我不使用ActiveRecord。我的application.rb中文件的頂部看起來像這樣:

require File.expand_path('../boot', __FILE__) 

#require 'rails/all' 
require "action_controller/railtie" 
require "action_mailer/railtie" 

但軌道加載後,如果我進入控制檯,輸入:

defined?(ActiveRecord::Base) 
#=> "constant" 

我希望它是nil

所以我的一個寶石必須加載ActiveRecord。

如何確定哪個gem或文件需要ActiveRecord?

回答

0

好吧,我想出了一個辦法做到這一點,但不知道它的最好的:

由於我使用的捆綁,我只是增加了一個破發點捆綁需要的文件後,如果再回頭檢查文件已加載。

我在Bundler::Runtime#requireKernel.require行添加了斷點。

編鐘如果有更優雅的方式。

0

如果你看看你的Gemfile.lock,你可以找出哪些寶石具有ActiveRecord作爲依賴關係。

+0

謝謝 - 具有依賴性是不夠的。一堆寶石對他們的測試套件有依賴性,但在標準使用需要時不加載它們。另一方面,有些時候依賴關係沒有說明,他們仍然需要文件 – Jonathan

+1

雖然我應該補充說,這應該是你應該看的第一個地方 - 它通常會幫助你 – Jonathan

+0

我可能是錯的,但我不要認爲gem的測試依賴關係會出現在'Gemfile.lock'中(否則每個gem都將依賴於rspec或測試單元)。儘管gem可能需要gem中的文件,但它並沒有將其指定爲依賴關係,這是可怕的做法。 –