2012-06-29 25 views
5

Hãy nói rằng tôi có lớp sau:Có cách nào để xem mã nguồn của phương thức từ bảng điều khiển Rails không?

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

Có thể cho tôi để đi vào giao diện điều khiển và xem ra mã nguồn phương pháp fullname trong giao diện điều khiển bằng cách nào đó? Giống như, nó sẽ giống như ...

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 

Hoặc thực sự có cách nào để xem mã nguồn không? Cảm ơn!

+0

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

Trả lời

18

Bạn cũng có thể sử dụng pry (http://pry.github.com/) giống như IRB trên steroid. Bạn có thể làm những việc như:

[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

Woah, không bao giờ biết điều này. Tuyệt vời. – dojosto

2

Không chính xác những gì bạn đang yêu cầu, nhưng điều này Railscast có thể hữu ích.

Nó dạy cho bạn một thủ thuật cho phép bạn mở phương thức trong trình soạn thảo văn bản của mình từ bảng điều khiển Rails.

UPDATE:

Tôi chỉ nhận ra rằng liên kết là đằng sau một tường phí ... Dưới đây là một bản tóm tắt của các trick.

Thêm phần này vào tập tin ~/.irbrc bạn

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

... nơi người bạn đời là lệnh CLI để mở TextMate (tất nhiên subl có thể được sử dụng ở đây cho Text Sublime).

Sau đó, trong giao diện điều khiển chỉ cần gọi

helper.mate(:number_to_currency) 

... nơi number_to_currency là phương pháp người là nguồn mà bạn muốn xem.

BTW, nếu bạn chưa có, bạn nên đăng ký Railscast Pro. IMO, không có cách nào tốt hơn để chi tiêu 9 đô la mỗi tháng. Và để tiết lộ, tôi không có mối quan hệ với trang web đó sau đó là một khách hàng hài lòng.

+0

cách tiếp cận pry mát hơn) – horseyguy

+0

Đồng ý. Pry mát hơn nhiều. :) –

Các vấn đề liên quan