412


Rubyだと、例えば`Method.source_location`を利用することによって、そのメソッドが定義されているファイルパスと行数を確認できるかと思います。

しかし、もう少し踏み込んで、定義場所だけではなく、そのメソッドの実際の挙動、つまりソースコード自体もその場で確認したいという場合、`pry`などで実際に定義されたときのソースを閲覧する方法というものはあったりするのでしょうか?


CC BY-SA 3.0
2014-12-06T22:01:31.797
409
2014-12-07T02:06:41.313
2014-12-07T02:06:41.313
728
939
question
ruby pry
定義されているメソッドのソースコードをpryなどで確認する方法


pryでshow-sourceを利用すれば可能だと思います。

[code]

    [1] pry(main)> show-source Pry
    
    From: /var/lib/gems/1.9.1/gems/pry-0.10.1/lib/pry/pry_instance.rb @ line 24:
    Class name: Pry
    Number of monkeypatches: 6. Use the `-a` option to display all available monkeypatches
    Number of lines: 641
    
    class Pry
      attr_accessor :binding_stack
    
    :q
    
    [2] pry(main)> show-method pry
    
    From: /var/lib/gems/1.9.1/gems/pry-0.10.1/lib/pry/core_extensions.rb @ line 41:
    Owner: Object
    Visibility: public
    Number of lines: 7
    
    def pry(object=nil, hash={})
      if object.nil? || Hash === object
        Pry.start(self, object || {})
      else
        Pry.start(object, hash)
      end
    end
    
[/code]

また、`$`が別名として定義されているので、そちらを使う事もできます

[code]

    [3] pry(main)> require 'rexml/document'
    => true
    [4] pry(main)> $ REXML::Document
    
    From: /usr/lib/ruby/1.9.1/rexml/document.rb @ line 20:
    Class name: REXML::Document
    Number of lines: 226
    
    class Document < Element
      # A convenient default XML declaration.  If you want an XML declaration,
      # the easiest way to add one is mydoc << Document::DECLARATION
      # +DEPRECATED+
    
[/code]


CC BY-SA 3.0
2014-12-07T01:47:37.733
412
2014-12-07T01:47:37.733
728
409
answer