2011-08-25 9 views
12

यदि मैं आईआरबी में एक विधि परिभाषित करता हूं, तो सत्र में बाद में अपने स्रोत की समीक्षा करने का कोई तरीका है?आईआरबी में, क्या मैं पहले परिभाषित विधि के स्रोत को देख सकता हूं?

=> def my_method; puts "hi"; end; 

यह संभव है: उत्पादन की

> def my_method 
> puts "hi" 
> end 

कई स्क्रीन बाद में मैं जैसे

> source my_method 

कुछ लिखने में सक्षम हो और वापस प्राप्त करना चाहते हैं?

उत्तर

13

pry आज़माएं। इसके बारे में railscast है (इसे उसी सप्ताह जारी किया गया है) और यह आपको दिखाता है कि show-method का उपयोग करके कोड कैसे दिखाया जाए।

5

आप रूबी 1.9.2 का उपयोग करते हैं और एक नए Rubygems.org पर उपलब्ध की तुलना में sourcify मणि के संस्करण (उदाहरण के लिए GitHub से स्रोत का निर्माण), तो आप ऐसा कर सकते हैं:

>> require 'sourcify' 
=> true 
>> 
.. class MyMath 
..  def self.sum(x, y) 
..   x + y # (blah) 
..  end 
.. end 
=> nil 
>> 
.. MyMath.method(:sum).to_source 
=> "def sum(x, y)\n (x + y)\nend" 
>> MyMath.method(:sum).to_raw_source 
=> "def sum(x, y)\n x + y # (blah)\n end" 

संपादित करें: यह भी जाँच बाहर method_source, जो प्राइ आंतरिक रूप से उपयोग करता है।

+0

यह मेरे लिए काम नहीं करता – horseyguy

+1

जैसा कि मैंने कहा था कि आपको रूबी 1.9.2 और 'sourcify' का एक संस्करण चाहिए जो वर्तमान में Rubygems.org पर उपलब्ध है (मैंने गिट रेपो से मेरा निर्माण किया) की तुलना में नया है। मैंने इसे और अधिक स्पष्ट करने के लिए अपनी पोस्ट अपडेट की। –

13

आईआरबी में नहीं, लेकिन Pry में यह सुविधा अंतर्निहित है।

देखो:

pry(main)> def hello 
pry(main)* puts "hello my friend, it's a strange world we live in" 
pry(main)* puts "yes! the rich give their mistresses tiny, illuminated dying things" 
pry(main)* puts "and life is neither sacred, nor noble, nor good" 
pry(main)* end 
=> nil 
pry(main)> show-method hello 

From: (pry) @ line 1: 
Number of lines: 5 

def hello 
    puts "hello my friend, it's a strange world we live in" 
    puts "yes! the rich give their mistresses tiny, illuminated dying things" 
    puts "and life is neither sacred, nor noble, nor good" 
end 
pry(main)> 
1

क्या मैं का उपयोग method_source है मैं विधि कोड जो मूल रूप से इस रत्न के लिए अपने आवरण है। Rails ऐप्स के लिए Gemfile में method_source जोड़ें। और निम्नलिखित कोड के साथ प्रारंभकर्ता बनाएँ।

# Takes instance/class, method and displays source code and comments 
    def code(ints_or_clazz, method) 
    method = method.to_sym 
    clazz = ints_or_clazz.is_a?(Class) ? ints_or_clazz : ints_or_clazz.class 
    puts "** Comments: " 
    clazz.instance_method(method).comment.display 
    puts "** Source:" 
    clazz.instance_method(method).source.display 
    end 

प्रयोग है:

code Foo, :bar 

या उदाहरण के साथ

code foo_instance, :bar 

बेहतर दृष्टिकोण, अपने आईआरबी विस्तार के साथ/lib फ़ोल्डर में साथ वर्ग के लिए की तुलना में आप सिर्फ यह आवश्यकता है प्रारंभकर्ताओं में से एक (या अपना खुद का बनाएँ)

संबंधित मुद्दे

 संबंधित मुद्दे