[#44909] VRDdeClientについて — Toshiyasu Soejima <clev@...2.so-net.ne.jp>
#
17 messages
2008/05/11
[#44911] Re: VRDdeClientについて
— yukimi_sake <yukimi_sake@...>
2008/05/11
こんにちは、雪見酒です。
[#44923] Re: VRDdeClientについて
— Takahiro Kambe <taca@...>
2008/05/13
In message <4826942F.4080102@ck2.so-net.ne.jp>
[#44910] SimpleDelegator#dupの引数objについて — "SHIMADA Koji" <snoozer.05@...>
しまだです。
6 messages
2008/05/11
[#44936] yamlとencoding — "Yutaka Kanemoto" <kinpoco@...>
金本と申します。
16 messages
2008/05/14
[#44937] Re: yamlとencoding
— "NARUSE, Yui" <naruse@...>
2008/05/14
成瀬です。
[#44952] Re: yamlとencoding
— "NARUSE, Yui" <naruse@...>
2008/05/17
成瀬です。
[#44997] Re: yamlとencoding
— "Yutaka Kanemoto" <kinpoco@...>
2008/06/03
金本と申します.
[#44942] Gemでhpricotインストールエラー — "Yangkook Kim" <yangkookkim@...>
Kimと申します。
8 messages
2008/05/16
[#44945] Re: Gemでhpricotインストールエラー
— rubikitch@...
2008/05/16
From: "Yangkook Kim" <yangkookkim@gmail.com>
[#44980] 重いタスクと平行にirbを使うと遅い? — "takeru sasaki" <sasaki.takeru@...>
佐々木と申します。
8 messages
2008/05/31
[#44981] Re: 重いタスクと平行にirbを使うと遅い?
— rubikitch@...
2008/05/31
From: "takeru sasaki" <sasaki.takeru@gmail.com>
[#44986] Ruby 1.8.7 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.7 をリリースしました。
5 messages
2008/05/31
[ruby-list:44896] Re: Method#arity
From:
rubikitch@...
Date:
2008-05-07 09:07:34 UTC
List:
ruby-list #44896
From: "ARAI Shunichi" <arai@mellowtone.org>
Subject: [ruby-list:44893] Re: Method#arity
Date: Wed, 7 May 2008 17:28:47 +0900
るびきちです。
> メソッドの引数について詳細に調べるには、
> かなり複雑な手法を使う必要があるんですね。
そうなんです。
以下はrcovを使った別解です。
Rcov::CallSiteAnalyzer.new.run_hookedのブロックではcallsite, defsiteを得るための
フックを設定しています。Rubyレベルだとset_trace_funcですが、
あれは遅すぎるので拡張ライブラリです。
defsiteでメソッドの定義位置(ファイル名と行番号)を得ることができます。
そこから行の内容を取り出し、それを解析していけば引数名や引数の数を得ることができるでしょう。
require 'rcov'
class Rcov::CallSiteAnalyzer::DefSite
def line_content
@lines ||= File.readlines(file)
@lines[line-1]
end
end
def foo(a, b=nil, *c, &block)
[a, b, c, block]
end
analyzer = Rcov::CallSiteAnalyzer.new
# このブロック内で実行されたメソッドの定義位置を知ることができる。
analyzer.run_hooked do
foo 1, 2, 3
end
analyzer.analyzed_classes # => ["#<Class:Rcov::CallSiteAnalyzer>", "Object", "Rcov::DifferentialAnalyzer"]
analyzer.methods_for_class("Object") # => ["foo"]
defsite = analyzer.defsite("Object#foo") # => #<struct Rcov::CallSiteAnalyzer::DefSite file="/m/home/rubikitch/xmpfilter.tmpfile_11874-1.rb", line=10>
defsite.line_content # => "def foo(a, b=nil, *c, &block)\n"
--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/