查找ruby方法(以rails为例)

我们知道ruby使用动态方法,还有一些mixin等功能,所以查找ruby的方法变得比一般的语言更困难,高富帅可以用textmate,屌丝没得。主要的想法是使用grep。


grep [options] [patten] [files]


在使用linux命令查找ruby方法时,更多的时候需要使用-rn的参数就足够,r表示recursive, n表式行号


可以先clone一份最新版本的rails代码作为实验:git@github.com:rails/rails.git


首先进入到rails/activereocrd目录下,我们知道ActiveRecord类提供了如find_by这个方法,我们就查找find_by这个方法。得到结果:

kiwi@kiwi-K43SV:~/rails/activerecord$ grep -rn "def find_by" .

./lib/active_record/associations/collection_association.rb:569: def find_by_scan(*args)

./lib/active_record/querying.rb:37: def find_by_sql(sql, binds = [])

./lib/active_record/relation/finder_methods.rb:47: def find_by(*args)

./lib/active_record/relation/finder_methods.rb:53: def find_by!(*args)


这样就能够找到find_by方法了。这种是最容易的情况。


另一种情况是我们想查找被delegate的方法:假设我们要查找的是ActiveRecord中的last方法

kiwi@kiwi-K43SV:~/rails/activerecord$ grep -rn "delegate.\+:last" .

./lib/active_record/querying.rb:4: delegate :find, :take, :take!, :first, :first!, :last, :last!, :exists?, :any?, :many?, :to => :all


即找出来被delegate了:all

这样再使用define的搜索方式就能找到all是怎么是实现的了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值