2012-06-29 71 views
5

比方說,我有以下類:有沒有辦法從Rails控制檯查看方法的源代碼?

class User < ActiveRecord::Base 
    def fullname 
    "#{self.first_name} #{self.last_name}" 
    end 
end 

是否有可能對我來說,進入控制檯,並查看全名法的源碼輸出在控制檯不知何故?像,它看起來像...

irb(main):010:0> omg_console_you_are_awesome_show_source(User.fullname) 
[Fri Jun 29 14:11:31 -0400 2012] => def fullname 
[Fri Jun 29 14:11:31 -0400 2012] => "#{self.first_name} #{self.last_name}" 
[Fri Jun 29 14:11:31 -0400 2012] => end 

或者真的有什麼方法可以查看源代碼?謝謝!

+0

https://github.com/banister/method_source – carlosvini

回答

18

你也可以使用pry (http://pry.github.com/)這就像IRB類固醇。你可以做的東西,如:

[1] pry(main)> show-source Array#each 

From: array.c in Ruby Core (C Method): 
Number of lines: 11 
Owner: Array 
Visibility: public 

VALUE 
rb_ary_each(VALUE ary) 
{ 
    long i; 

    RETURN_ENUMERATOR(ary, 0, 0); 
    for (i=0; i<RARRAY_LEN(ary); i++) { 
    rb_yield(RARRAY_PTR(ary)[i]); 
    } 
    return ary; 
} 
[2] pry(main)> show-doc Array#each 

From: array.c in Ruby Core (C Method): 
Number of lines: 11 
Owner: Array 
Visibility: public 
Signature: each() 

Calls block once for each element in self, passing that 
element as a parameter. 

If no block is given, an enumerator is returned instead. 

    a = [ "a", "b", "c" ] 
    a.each {|x| print x, " -- " } 

produces: 

    a -- b -- c -- 
+0

哇,永遠不會知道這一點。真棒。 – dojosto

2

不正是你在問什麼,但這Railscast可能會有所幫助。

它教你一個技巧,可以讓你從Rails控制檯打開文本編輯器中的方法。

UPDATE:

我才意識到那個鏈接是付費牆...這裏的技巧的總結。

添加到您的〜/ .irbrc文件

class Object 
    def mate(method_name) 
    file, line = method(method_name).source_location 
    `mate '#{file}' -l #{line}` 
    end 
end 

...這裏的隊友是CLI命令打開TextMate的(當然subl的這裏可以用於崇高文本)。

然後在控制檯只需調用

helper.mate(:number_to_currency) 

...其中number_to_currency是誰是您要查看源的方法。

順便說一句,如果你還沒有,你應該訂閱Railscast Pro。海事組織,沒有更好的方式每月花費9美元。並且要透露,我與該網站沒有任何關係,除非是滿意的客戶。

+0

撬的辦法是冷卻器;) – horseyguy

+0

同意。撬更酷了。 :) –

相關問題