在我提出问题之前,我想提醒大家我是一个编程新手,所以如果我问了一些荒谬的问题,请纠正我。
我一直在阅读有关 Ruby 具有开放类的信息,即可以添加一个方法。但是,我试图举几个例子来说明 Rails 如何添加到现有的 Ruby 类中。
在我提出问题之前,我想提醒大家我是一个编程新手,所以如果我问了一些荒谬的问题,请纠正我。
我一直在阅读有关 Ruby 具有开放类的信息,即可以添加一个方法。但是,我试图举几个例子来说明 Rails 如何添加到现有的 Ruby 类中。
我第二马修斯。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 是这些方法的最终汇编。
Rails 有很多核心扩展,它们位于一个单独的 gem 中——ActiveSupport。
时间。
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
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