为什么我需要'active_support / core_ext'?

时间:2012-05-30 20:38:06

标签: ruby require

在非rails项目中,我可以单独安装activesupport。当我需要其酷炫的monkeypatch功能时:

require 'active_support/core_ext'

但它是如何运作的?它会自动要求active_support/core_ext中的所有文件吗? Ruby如何知道他们在这里?

2 个答案:

答案 0 :(得分:3)

这就是我的平台的例子:

> gem which active_support
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.12/lib/active_support.rb
> cd /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.12/lib/active_support
> cat core_ext.rb
filenames = Dir["#{File.dirname(__FILE__)}/core_ext/*.rb"].sort.map do |path|
  File.basename(path, '.rb')
end

filenames.each { |filename| require "active_support/core_ext/#{filename}" }

因此,您看到core_ext.rb是将“自动加载”*.rb目录中每个core_ext文件的文件。

答案 1 :(得分:2)

查找文件named core_ext.rb

但没有require无法加载目录。