3

我繼承了以前由多個開發人員傳遞的舊項目。它的狀態很糟糕,所以我試圖讓它恢復生機。我注意到有一些寶石和庫已經出售到項目中,但不知道它們是否正在使用或什麼!我該如何判斷是否使用了一個買賣的寶石?

如果有些寶石不再被項目使用,我該如何鍛鍊?

+0

刪除它們,看看是否有什麼破裂 – 2013-03-17 11:32:37

+0

@NickGinanto我希望會有更優雅的方式。 – Roman 2013-03-17 11:33:24

+0

我知道的唯一另外一種方式是查看代碼是否使用這些寶石的難度..手動在代碼中搜索寶石的核心內容 – 2013-03-17 11:34:55

回答

5

一個方便的方法來檢查這是通過使用REPL。我會建議安裝pry-rails gem,它可以簡單地用默認的導軌控制檯(IRB)代替更爲強大的Pry REPL

#Gemfile 

group :development do 
    pry-rails 
end 

運行bundle install,而且比開始Rails的控制檯bundle exec rails c。一旦你在Pry內,你可以使用它內置的show-source命令來查找特定方法的實現位置。例如:

>> show-source ActiveRecord::Base.establish_connection 

From: /home/andrea/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_specification.rb @ line 128: 
Owner: #<Class:ActiveRecord::Base> 
Visibility: public 
Number of lines: 11 

def self.establish_connection(spec = ENV["DATABASE_URL"]) 
    resolver = ConnectionSpecification::Resolver.new spec, configurations 
    spec = resolver.spec 

    unless respond_to?(spec.adapter_method) 
    raise AdapterNotFound, "database configuration specifies nonexistent # {spec.config[:adapter]} adapter" 
    end 
    remove_connection 
    connection_handler.establish_connection name, spec 
end 

有關如何使用這個特定的內置命令的詳細用法示例,請參閱撬的直列help系統:

help show-source 

;或者看看Source browsing頁面上撬的wiki 。

1

有一些簡單的技巧可以幫助你做到這一點。你可以例如把puts caller作爲寶石的根文件,看看它們是否從某處被調用。

你也可以使用跟蹤建成像紅寶石功能:http://apidock.com/ruby/Kernel/set_trace_func

或使用外部跟蹤工具。

相關問題