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

lgn21st · 发布于 2013年2月14日 · 最后由 kgen 回复于 2013年2月20日 · 3111 次阅读
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
luikore · #1 · 2013年2月14日 3 个赞

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

3
lgn21st · #2 · 2013年2月14日

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

gem 'pry-rails'
3
lgn21st · #3 · 2013年2月14日 2 个赞

顺便推荐一篇文章: Pry Everywhere

2880
luikore · #4 · 2013年2月14日

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

8
hooopo · #5 · 2013年2月14日

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

370
kgen · #6 · 2013年2月14日 1 个赞

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

1801
Leron · #7 · 2013年2月14日

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

594
ery · #8 · 2013年2月14日

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

186
doitian · #9 · 2013年2月15日

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

370
kgen · #10 · 2013年2月15日

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

370
kgen · #11 · 2013年2月15日

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

594
ery · #12 · 2013年2月19日

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

370
kgen · #13 · 2013年2月20日 1 个赞

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

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