Ruby on rails 是否有查看方法的方法';来自Rails控制台的源代码?

Ruby on rails 是否有查看方法的方法';来自Rails控制台的源代码?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,假设我有以下课程: class User < ActiveRecord::Base def fullname "#{self.first_name} #{self.last_name}" end end 或者真的有任何查看源代码的方法吗?谢谢 这不完全是你想要的,但这可能会有所帮助 它告诉您一个技巧,允许您从Rails控制台在文本编辑器中打开该方法 更新: 我刚意识到链接是在付费墙后面。。。下面是技巧的总结 将此添加到~/.irbrc文件中 class Object

假设我有以下课程:

class User < ActiveRecord::Base
  def fullname
    "#{self.first_name} #{self.last_name}"
  end
end

或者真的有任何查看源代码的方法吗?谢谢

这不完全是你想要的,但这可能会有所帮助

它告诉您一个技巧,允许您从Rails控制台在文本编辑器中打开该方法

更新:

我刚意识到链接是在付费墙后面。。。下面是技巧的总结

将此添加到~/.irbrc文件中

class Object
  def mate(method_name)
    file, line = method(method_name).source_location
    `mate '#{file}' -l #{line}`
  end
end
…其中mate是打开TextMate的CLI命令(当然这里可以使用subl来表示崇高文本)

然后在控制台中只需调用

helper.mate(:number_to_currency)
…其中number\u to\u currency是您要查看的来源的方法

顺便说一句,如果你还没有,你应该订阅。在国际海事组织,没有更好的办法每月花9美元。我要说的是,除了作为一个满意的客户之外,我与该网站没有任何关系。

你也可以使用pry),这就像类固醇上的IRB。你可以这样做:

[1] pry(main)> show-source Array#each

From: array.c in Ruby Core (C Method):
Number of lines: 11
Owner: Array
Visibility: public

VALUE
rb_ary_each(VALUE ary)
{
    long i;

    RETURN_ENUMERATOR(ary, 0, 0);
    for (i=0; i<RARRAY_LEN(ary); i++) {
    rb_yield(RARRAY_PTR(ary)[i]);
    }
    return ary;
}
[2] pry(main)> show-doc Array#each

From: array.c in Ruby Core (C Method):
Number of lines: 11
Owner: Array
Visibility: public
Signature: each()

Calls block once for each element in self, passing that
element as a parameter.

If no block is given, an enumerator is returned instead.

   a = [ "a", "b", "c" ]
   a.each {|x| print x, " -- " }

produces:

   a -- b -- c --
[1]pry(main)>显示源数组#每个
From:Ruby核心中的array.c(c方法):
行数:11
所有者:数组
能见度:公众
价值
rb_ary_每个(值ary)
{
龙我;
返回枚举数(ary,0,0);
对于(i=0;我显示doc数组#每个
From:Ruby核心中的array.c(c方法):
行数:11
所有者:数组
能见度:公众
签字:每()
为self中的每个元素调用一次block,并传递
元素作为参数。
如果没有给出块,则返回枚举数。
a=[“a”、“b”、“c”]
a、 每个{x |打印x,“--”}
生产:
a--b--c--

Woah,我从来不知道这件事。太棒了。
[1] pry(main)> show-source Array#each

From: array.c in Ruby Core (C Method):
Number of lines: 11
Owner: Array
Visibility: public

VALUE
rb_ary_each(VALUE ary)
{
    long i;

    RETURN_ENUMERATOR(ary, 0, 0);
    for (i=0; i<RARRAY_LEN(ary); i++) {
    rb_yield(RARRAY_PTR(ary)[i]);
    }
    return ary;
}
[2] pry(main)> show-doc Array#each

From: array.c in Ruby Core (C Method):
Number of lines: 11
Owner: Array
Visibility: public
Signature: each()

Calls block once for each element in self, passing that
element as a parameter.

If no block is given, an enumerator is returned instead.

   a = [ "a", "b", "c" ]
   a.each {|x| print x, " -- " }

produces:

   a -- b -- c --