如果要查看 ActiveRecord 的 update_attribute 函数的源代码,一个比较常见的方法是直接在 Rails 源码中搜索 def update_attribute。博客 The Pragmatic Studio 介绍了一个更方便的技巧,在 Ruby 命令行中就能启动编辑器直接访问。

通过 Object#method 方法可以获得 update_attribute 方法的对象,而 Method#source_location 则返回这个方法定义的文件和位置。有了这个信息后,就能启动编辑器查看源代码了:

> method = User.first.method(:update_attribute)

User Load (0.5ms)  SELECT `users`.* FROM `users` LIMIT 1

=> #

> location = method.source_location

=> ["/Users/wyx/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.2.11/lib/active_record/persistence.rb",

177]

> `subl #{location[0]}:#{location[1]}`

=> ""

把这段代码封装成函数,加到 .pryrc 或者 .irbrc 中:

def source_for(object, method)

location = object.method(method).source_location

`subl #{location[0]}:#{location[1]}` if location && location[0] != '(eval)'

location

end

如果要查看 User 的实例方法 update_attribute,可以直接在 pry / irb 中调用

source_for(User.first, :update_attribute)

如果要使用其他编辑器,得把 subl #{location[0]}:#{location[1]} 换成这个编辑器对应的命令行:

# TextMate

mate #{location[0]} -l #{location[1]}

# MacVim

mvim #{location[0]} +#{location[1]}

# Emacs

emacs {location[0]} +#{location[1]}

idea查看ruby代码_Ruby实现命令行中查看函数源码的方法相关推荐

  1. windows在命令行中查看当前路径

    windows在命令行中查看当前路径 文章目录: 一.Linux命令行中查看当前路径 二.windows命令行中查看当前路径 一.Linux命令行中查看当前路径 命令:pwd mosheng@ms-s ...

  2. 在命令行中查看apk的签名信息

    在命令行中查看apk的签名信息,命令如下: keytool -list -printcert -jarfile app.apk 会在命令行打印出类似如下的信息: 签名者 #1: 签名: 所有者: CN ...

  3. 60行Shell代码实现在命令行中优雅地听歌

    本文也发在了我的新个人博客上了,可以点击下面的链接获取更好的阅读体验: 60行Shell代码实现在命令行中优雅地听歌 0. 起因 起因就是对探索新歌失去了兴趣,并且觉得各种音乐播放软件都不怎么好用,而 ...

  4. 几种在shell命令行中过滤adb logcat输出的方法

    几种在shell命令行中过滤adb logcat输出的方法 分类标签: LogCat  ADB 我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流 ...

  5. 在Linux系统的命令行中为MySQL创建用户的方法

    这篇文章主要介绍了在Linux系统的命令行中为MySQL创建用户的方法,包括对所建用户的权限管理,需要的朋友可以参考下 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQ ...

  6. linux中可以使用以下命令查看文件内容,在Linux服务器中使用命令行中查看文件内容...

    通常查看文件内容的方法是简单地在文本编辑器中打开它.然而,为了更快速地查看,事实上,也为了在shell脚本中实现自动化,使用文本编辑器的方法并不适合. 在Linux中,有很多命令可以解决这个问题:在命 ...

  7. Windows 如何在cmd命令行中查看、修改、删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

  8. windows cmd命令行中 查看 修改 删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

  9. 如何在cmd命令行中查看、修改、删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

最新文章

  1. python采集cpu信息
  2. 先进先出算法(FIFO)——页面置换
  3. r语言和python-R语言和Python —— 一个
  4. ME_DIRECT_INPUT_INFORECORD 信息记录批量修改程序
  5. graphpad如何做x轴在上方的图_R-ggridges包:山峰叠峦图
  6. hashmap put过程_阿里十年技术大咖,教你如何分析1.7中HashMap死循环
  7. Laravel-admin 分类避免踩坑
  8. 【记录】Docker安装后出现 Cannot connect to the Docker daemon
  9. __builtin_apply/__builtin_apply_args
  10. 更新智能开发研发进度
  11. java中之内存溢出说明
  12. 圆周率用计算机能算出来不,怎样用普通的家用计算机计算圆周率?
  13. 【OS】Linux下 /dev 常见特殊设备介绍与应用[loop]
  14. iOS TextField收取键盘的方法
  15. 知乎客户端跨平台 Hybrid 调试实战
  16. 2014-2015 少年辛苦终身事,莫向光阴惰寸功
  17. FI凭证冲销(蓝冲、红冲)和反记账后台配置
  18. Glide 入门到精通之四——图片缩放和调整大小
  19. .Net发布到IIS服务器,IIS服务器配置
  20. PMP证书到期后,有没有必要续证了

热门文章

  1. Internet Explorer 8 使用技巧(2):加速器
  2. 解决flask中文乱码的问题
  3. python3.7.2 pip 出现locations that require TLS/SSL异常处理方法
  4. 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
  5. 【记录】解决uni-app 用nginx反向代理出现Invalid Host header问题
  6. Google Maps API v2 android版本开发 国内手机不支持google play Service相关问题解决--图文教程
  7. python关于解决‘\u‘开头的字符串转中文的方法
  8. Java中的异常和处理详解
  9. [问题解决]NotImplementedError 错误原因:子类没有实现父类要求一定要实现的接口
  10. 【原】python3.7 无法pip安装提示ssl错误解决方案