你能告诉我Rails为现有Ruby类添加的任何方法吗?

时间:2012-04-17 01:39:16

标签: ruby-on-rails ruby class

在我提出问题之前,我想提醒大家我是一名编程新手,所以如果我提出一些荒谬的话,请纠正我。

我一直在阅读有关开放类的Ruby,即可以添加一个方法。但是,我试图获得一些Rails如何添加到现有Ruby类的示例。

3 个答案:

答案 0 :(得分:2)

Rails拥有如此多的核心扩展,它们位于一个独立的宝石中 - ActiveSupport

试图在这里解释一切都没有意义,我只想指出the Rails guides。熟悉它们后,请在需要时参考the documentation

答案 1 :(得分:2)

我是第二个马修斯。 ActiveSupport就是一个很好的例子。看一下这里的一些源代码文件:

https://github.com/rails/rails/tree/master/activesupport/lib/active_support/core_ext

并且,这是一个典型且简单化的示例,它在Ruby中的标准Array类中添加了有用且有些争议的方法。

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/access.rb

大多数Ruby库都有一个名为'core_ext','ext'的目录或者这一行的内容,其中包括以某种方式扩展Ruby核心库的方法。人们总是重新发明方法,从某种意义上说,ActiveSupport是这些方法的最终汇编。

答案 2 :(得分:0)

我发现一个很好的例子是Time

来自rails应用程序

时间。

Loading development environment (Rails 3.2.3)
1.9.3p125 :001 > Time.
Display all 252 possibilities? (y or n)
                                           Time.module_exec
Time.__delay__                             Time.mongo_thread_local_accessor
Time.__id__                                Time.name
...

Total = 252

来自普通的红宝石控制台(IRB)

$ irb
1.9.3p125 :001 > Time.
                                 Time.hash                        Time.private_method_defined?
Time.__id__                      Time.include?                    Time.private_methods
Time.__send__                    Time.included_modules            Time.protected_instance_methods
...

Total = 93