我繼承了以前由多個開發人員傳遞的舊項目。它的狀態很糟糕,所以我試圖讓它恢復生機。我注意到有一些寶石和庫已經出售到項目中,但不知道它們是否正在使用或什麼!我該如何判斷是否使用了一個買賣的寶石?
如果有些寶石不再被項目使用,我該如何鍛鍊?
我繼承了以前由多個開發人員傳遞的舊項目。它的狀態很糟糕,所以我試圖讓它恢復生機。我注意到有一些寶石和庫已經出售到項目中,但不知道它們是否正在使用或什麼!我該如何判斷是否使用了一個買賣的寶石?
如果有些寶石不再被項目使用,我該如何鍛鍊?
一個方便的方法來檢查這是通過使用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 。
有一些簡單的技巧可以幫助你做到這一點。你可以例如把puts caller
作爲寶石的根文件,看看它們是否從某處被調用。
你也可以使用跟蹤建成像紅寶石功能:http://apidock.com/ruby/Kernel/set_trace_func
或使用外部跟蹤工具。
刪除它們,看看是否有什麼破裂 – 2013-03-17 11:32:37
@NickGinanto我希望會有更優雅的方式。 – Roman 2013-03-17 11:33:24
我知道的唯一另外一種方式是查看代碼是否使用這些寶石的難度..手動在代碼中搜索寶石的核心內容 – 2013-03-17 11:34:55