当前位置: 首页 > 编程笔记 >

Ruby实现命令行中查看函数源码的方法

井昊乾
2023-03-14
本文向大家介绍Ruby实现命令行中查看函数源码的方法,包括了Ruby实现命令行中查看函数源码的方法的使用技巧和注意事项,需要的朋友参考一下

如果要查看 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

=> #<Method: User(ActiveRecord::Persistence)#update_attribute>

> 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]}

 类似资料:
  • 我想看看一个函数的源代码,看看它是如何工作的。我知道我可以通过在提示符下键入函数名称来打印函数: 在这种情况下,是什么意思?如何找到实际使用的源代码,例如:? 如何查找和等函数? 在另一些情况下,有一些R代码,但大部分工作似乎是在其他地方完成的。 如何找到函数的功能?类似地,某些函数调用、、、或。我怎样才能找到这些的源代码?

  • 问题内容: 有人知道Linux / OS X的命令行CSV查看器吗?我在想类似的东西,但是以更易读的方式将列隔开。(我可以用OpenOffice Calc或Excel打开它,但这样做太强大了,以至于只按需要 查看 数据即可。)进行水平和垂直滚动会很棒。 问题答案: 您还可以使用以下命令: 是一个非常方便的标准UNIX程序-它找到每列的适当宽度,并将文本显示为格式良好的表格。 注意:每当您有空字段时

  • 本文向大家介绍Android中使用SQLite3 命令行查看内嵌数据库的方法,包括了Android中使用SQLite3 命令行查看内嵌数据库的方法的使用技巧和注意事项,需要的朋友参考一下 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令。 【1】在Android程序中,一般创建的数据库存放在 /data/data/[应用程序包名]/databases 的目录下。 【2】cd

  • 本文向大家介绍从源码看angular/material2 中 dialog模块的实现方法,包括了从源码看angular/material2 中 dialog模块的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文将探讨material2中popup弹窗即其Dialog模块的实现。 使用方法 引入弹窗模块 自己准备作为模板的弹窗内容组件 在需要使用的组件内注入 MatDialog 服务 调用 o

  • Ruby 一般是从命令行运行,方式如下: 解释器可以通过下列选项被调用,来控制解释器的环境和行为。 选项 描述 -a 与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode)。请查看 -n 和 -p 选项。 -c 只检查语法,不执行程序。 -C dir 在执行前改变目录(等价于 -X)。 -d 启用调试模式(等价于 -debug)。 -F pat 指定 pat 作为默

  • 本文向大家介绍Ruby中执行Linux shell命令的六种方法详解,包括了Ruby中执行Linux shell命令的六种方法详解的使用技巧和注意事项,需要的朋友参考一下 在Ruby中,执行shell命令是一件不奇怪的事情,Ruby提供了大概6种方法供开发者进行实现。这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。 exec exec会将指定的命令替换掉当前进程中的操作,