Ruby / Rails——从哪里包含一个方法? [复制]
Posted
技术标签:
【中文标题】Ruby / Rails——从哪里包含一个方法? [复制]【英文标题】:Ruby / Rails -- from where was a method was included? [duplicate] 【发布时间】:2012-05-06 15:56:42 【问题描述】:有没有办法从 Ruby / Ruby on Rails 中包含方法的位置找出?
例如,通过搜索Rails API我知道:
link_to
来自ActionView::Helpers::UrlHelper
,而
pluralize
来自ActionView::Helpers::TextHelper
但是有没有办法在 Ruby 本身中找出答案?即 inirb
,还是 Rails 控制台?
【问题讨论】:
您可能还想阅读此内容:***.com/questions/3393096/… 还有这个:***.com/questions/175655/… 【参考方案1】:是的:
@object.method(:method_name)
例如:
@object.method(:pluralize)
【讨论】:
@s = "error"; @s.pluralize(:method_name)
不提供ActionView::Helpers::TextHelper
。我误会了吗?
@MatthewJeppesen 试试@s.method(:pluralize)
:)
@s.method(:pluralize)
# => #<Method: String#pluralize>
...
@MatthewJeppesen 这是正确的结果。 pluralize
是直接添加到String
的方法。你可以看到它的定义here【参考方案2】:
无论您身处何种环境,都可以通过以下方式获取源位置:
obj.method(:method).source_location
它不会给你你想要的东西,但 Rails 核心开发人员擅长正确命名空间。以下示例可以从 rails 控制台运行:
Time.method(:zone).source_location
["/Users/pete/.rvm/gems/ruby-1.9.2-p290@gemset/gems/activesupport-3.2.3/lib/active_support/core_ext/time/zones.rb", 9]
然后您可以转到Rails source 并搜索该文件。提示:在 Github 上输入 't' 并开始输入。它将带您到that file,您可以看到它是直接在 Time 类上定义的。
【讨论】:
以上是关于Ruby / Rails——从哪里包含一个方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章