2012-04-25 6 views
2

Ruby/Ruby on Railsにメソッドが含まれていた場所を知る方法はありますか?例えばRuby/Rails - どこからメソッドが含まれていたのですか?

Rails APIの検索から、私がいることを知っている:

  • link_toActionView::Helpers::UrlHelperから来ている、と
  • pluralizeActionView::Helpers::TextHelper

から来るしかし、Rubyで見つけるための方法があります自体?つまり、irb、またはRailsコンソールですか?

+1

こちらもお読みください:http://stackoverflow.com/questions/3393096/how-can-i-get-source-code-of-a-methods-dynamically-and-also-which-file -is-this-m – Casper

+1

そして、これは:http://stackoverflow.com/questions/175655/how-to-find-where-a-method-is-defined-at-runtime – Casper

答えて

1

を使用してソースの場所を取得することができますRailsのコア開発者は適切な名前空間を設定することができます。次の例では、レールのコンソールから実行することができます:

Time.method(:zone).source_location 

["/Users/pete/.rvm/gems/[email protected]/gems/activesupport-3.2.3/lib/active_support/core_ext/time/zones.rb", 9] 

次にあなたがRails sourceに移動し、そのファイルを検索することができます。ヒント:Githubに「t」と入力して入力を開始します。 that fileに移動し、Timeクラスに直接定義されていることがわかります。

3

はい:たとえば

@object.method(:method_name) 

:それは与えることはありません

obj.method(:method).source_location 

を:あなたはあなたの中にいるどのような文脈

@object.method(:pluralize) 
+0

'@s =" error "; @ s.pluralize(:method_name) 'は' ActionView :: Helpers :: TextHelper'を返しません。私は誤解したことがありますか? – mjeppesen

+0

@MatthewJeppesen '@ s.method(:複数形)'を試してください:) – Casper

+0

'@ s.method(:複数形)' '#=>#<メソッド:String#pluralize>' ... – mjeppesen

関連する問題