1

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

我一直在阅读有关 Ruby 具有开放类的信息,即可以添加一个方法。但是,我试图举几个例子来说明 Rails 如何添加到现有的 Ruby 类中。

4

3 回答 3

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 是这些方法的最终汇编。

于 2012-04-17T01:59:23.460 回答
2

Rails 有很多核心扩展,它们位于一个单独的 gem 中——ActiveSupport

在这里解释一切是没有意义的,我只是将您指向Rails 指南。熟悉它们后,需要时参考文档

于 2012-04-17T01:47:16.123 回答
0

我发现一个很好的例子是时间

从 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
于 2012-04-17T02:25:19.843 回答