分享 在console中直接开启编辑器查看源码

lgn21st · 发布于 2013年2月14日 · 最后由 kgen 回复于 2013年2月20日 · 3291 次阅读
3
本帖已被设为精华帖!

http://pragmaticstudio.com/blog/2013/2/13/view-source-ruby-methods

具体做法是在 .irbrc 中添加一个helper method

def source_for(object, method)
  location = object.method(method).source_location
  # `mate #{location[0]} -l #{location[1]}` 
  # `mvim #{location[0]} +#{location[1]}`
  `subl #{location[0]}:#{location[1]}` if location # for Sublime Text
  location
end

然后再Rails console中就可以直接打开编辑器查看方法定义的source code了 比如查看 Person 实例的 update 方法:

source_for(Person.new, :update)
共收到 13 条回复
2880

如果用 pry, 可以直接 edit Person#update

3

#1楼 @luikore pry简直强大到无以复加!而且就在Gemfile里面添加一行就ok了。

gem 'pry-rails'
3

顺便推荐一篇文章: Pry Everywhere

2880

#2楼 @lgn21st 嗯嗯! 而且 vim 里用 slime 就能和 pry 之间跳来跳去超爽

8

断点调试最强大,可以结合proxy做一个类似fiddler的东东?

370

自从用了 better_errors + binding_of_caller,让 pry 也退休了。

1801

@luikore 在vim 怎么用的呢?有参考资料吗?

594

#6楼 @kgen 传说中 better_errors 很棒,一会我也要试试。

186

#6楼 @kgen 这个加断点要 raise 才行了

370

#8楼 @ery 特别是加了 binding_of_caller 居然可以在浏览器中 debug,帅极了

370

#9楼 @doitian 嗯,加断点的确没有pry方便,要手动加 raise

594

#10楼 @kgen 不过我猜测,在查找单元测试的报错原因的时候,还是需要依靠pry。

370

#12楼 @ery 单元测试颗粒极小,基本上出错就知道原因了,我很少Debug单元测试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册