2

IRBを介してインスタンスで使用可能なクラス固有のメソッドを確認する方法はありますか?

TabURIクラスのインスタンスを作成し、使用できるメソッドを確認するために押しましたが、約100の可能性があります。

  1.9.3p286 :001 > require 'uri'
=> true

1.9.3p286 :002 > uri = URI('http://game.dl.a-steroids.com/TrafficServer/')
=> #<URI::HTTP:0x00000000eae390 URL:http://game.dl.a-steroids.com/TrafficServer/>

  1.9.3p286 :008 > uri.
  Display all 102 possibilities? (y or n)

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html以下で説明されているような、そのインスタンスの特定のメソッドのみをフィルタリングしたいと思います。

  1.9.3p286 :003 > uri.host
=> "game.dl.a-steroids.com"

1.9.3p286 :006 > uri.path
=> "/TrafficServer/"

1.9.3p286 :007 > uri.scheme
=> "http"
4

3 に答える 3

4

URIモジュールです。インスタンスを持つことはできず、インスタンスメソッドもありません。で直接定義されているモジュールメソッドを表示するには、次の手順をURI実行します。

URI.methods(false)

#=> [:scheme_list、:split、:parse、:join、:extract、:regexp、:encode_www_form_component、:decode_www_form_component、:encode_www_form、:decode_www_form]

そして、URI(...)作成するのはのインスタンスですURI:HTTP。で直接定義されているインスタンスメソッドを表示するには、次のようにURI::HTTPします。

URI::HTTP.instance_methods(false)

#=> [:request_uri]


これが狭すぎると思われる場合は、スーパークラスにステップアップできます。URIクラスはに基づいていますURI::Generic

URI::HTTP.superclass

#=> URI :: Generic

だからそれで同じことをしてください:

URI::Generic.instance_methods(false)

#=> [:default_port、:scheme、:host、:port、:registry、:path、:query、:opaque、:fragment、:parser、:component、:set_scheme、:scheme =、:userinfo =、:user =、:password =、:set_userinfo、:set_user、:set_password、:userinfo、:user、:password、:set_host、:host =、:hostname、:hostname =、:set_port、:port =、:set_registry、:registry =、:set_path、:path =、:set_query、:query =、:set_opaque、:opaque =、:set_fragment、:fragment =、:hierarchical?、:absolute?、:absolute、:relative?、:merge!、:マージ、:+、:route_from、:-、:route_to、:normalize、:normalize!、:to_s、:==、:hash、:eql?、:component_ary、:select、:inspect、:coerce]

于 2012-10-27T01:35:54.487 に答える
1

私はこれをIRBで頻繁に使用します。

uri.methods - Object.methods

=> [
      :+, :-, :absolute, :absolute?, :coerce, :component, :component_ary,
      :default_port, :fragment, :fragment=, :hierarchical?, :host,
      :host=, :hostname, :hostname=, :merge, :merge!, :normalize,
      :normalize!, :opaque, :opaque=, :parser, :password, :password=,
      :path, :path=, :port, :port=, :query, :query=, :registry,
      :registry=, :relative?, :request_uri, :route_from, :route_to,
      :scheme, :scheme=, :select, :set_fragment, :set_host,
      :set_opaque, :set_password, :set_path, :set_port, :set_query,
      :set_registry, :set_scheme, :set_user, :set_userinfo, :user,
      :user=, :userinfo, :userinfo=
    ]
于 2012-10-27T01:20:53.657 に答える
1

次のようなものを.irbrcファイルに追加すると、すべてのオブジェクトが#own_methodsクラスを取得し、そのリストを取得するために使用できます。

class Object
  def own_methods
    self.class.instance_methods - self.class.superclass.instance_methods
  end
end
于 2012-10-27T01:31:42.020 に答える