我继承了一个以前由多个开发人员传递的旧项目。它的形状很糟糕,所以我正试图让它恢复生机。我注意到有一些 gems 和 libs 已被供应到项目中,但无法判断它们是否正在被使用或什么!
如果项目不再使用其中一些 gem,我该如何锻炼?
我继承了一个以前由多个开发人员传递的旧项目。它的形状很糟糕,所以我正试图让它恢复生机。我注意到有一些 gems 和 libs 已被供应到项目中,但无法判断它们是否正在被使用或什么!
如果项目不再使用其中一些 gem,我该如何锻炼?
一个方便的检查方法是使用 REPL。我建议安装pry-rails gem,它将简单地用更强大的Pry REPL替换默认的 rails 控制台(IRB) 。
#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
有关如何使用此特定内置命令的更多用法示例,请参阅 Pry 的内联help
系统:
help show-source
或者查看 Pry 的 wiki 上的Source 浏览页面。
有一些简单的技巧可以帮助您做到这一点。例如,您可以将puts caller
i 放在 gems 的根文件中,看看它们是否从某个地方被调用。
您还可以使用 ruby 内置的跟踪功能,例如:http ://apidock.com/ruby/Kernel/set_trace_func
或使用外部跟踪工具。