Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我怎样才能知道是否正在使用一颗出售的宝石?_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Rubygems - Fatal编程技术网

Ruby on rails 我怎样才能知道是否正在使用一颗出售的宝石?

Ruby on rails 我怎样才能知道是否正在使用一颗出售的宝石?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,我继承了一个以前由多个开发人员传递的旧项目。它的状态不好,所以我想让它恢复生机。我注意到有一些gem和lib已经被出售到这个项目中,但是无法判断它们是否被使用或者是什么 如果这些宝石中的一些不再被项目使用,我该如何锻炼呢?有一些简单的技巧可以帮助你做到这一点。例如,您可以在gems的根文件中放置一个put调用者i,看看它们是否从某个地方被调用 您还可以使用ruby内置的跟踪功能,如: 或者使用外部跟踪工具。一种方便的检查方法是使用REPL。我建议安装gem,它将简单地用功能更强大的rails控制

我继承了一个以前由多个开发人员传递的旧项目。它的状态不好,所以我想让它恢复生机。我注意到有一些gem和lib已经被出售到这个项目中,但是无法判断它们是否被使用或者是什么


如果这些宝石中的一些不再被项目使用,我该如何锻炼呢?

有一些简单的技巧可以帮助你做到这一点。例如,您可以在gems的根文件中放置一个
put调用者
i,看看它们是否从某个地方被调用

您还可以使用ruby内置的跟踪功能,如:


或者使用外部跟踪工具。

一种方便的检查方法是使用REPL。我建议安装gem,它将简单地用功能更强大的rails控制台(IRB)取代默认的rails控制台

运行
bundle install
,然后用
bundle exec Rails c
启动Rails控制台。一旦进入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的wiki上查看该页面

把它们拿走,看看有没有什么breaks@NickGinanto我希望会有一个更优雅的方法。我知道的唯一其他方法是看看代码是否以艰难的方式使用了这些宝石。。在代码中手动搜索gem的核心内容答案可能是“否”,但无论如何,应用程序是否有一个好的测试套件?如果是,那么通过确保测试套件仍然运行,可以更轻松地自信地删除内容。
 >> 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 show-source