Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么我需要';主动支持/核心扩展';?_Ruby_Require - Fatal编程技术网

Ruby 为什么我需要';主动支持/核心扩展';?

Ruby 为什么我需要';主动支持/核心扩展';?,ruby,require,Ruby,Require,在非rails项目中,我可以只安装activesupportstandalone。当我需要其酷炫的monkeypatch功能时: require 'active_support/core_ext' 但是它是如何工作的呢?它是否自动要求中的所有文件?Ruby如何知道它们在这里?查找文件 但是没有要求无法加载目录。这是如何实现的(例如我的平台): 您可以看到,core\u ext.rb是将“自动加载”core\u ext目录中每个*.rb文件的文件 > gem which active_suppo

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

require 'active_support/core_ext'
但是它是如何工作的呢?它是否自动要求中的所有文件?Ruby如何知道它们在这里?

查找文件

但是没有
要求
无法加载目录。

这是如何实现的(例如我的平台):

您可以看到,
core\u ext.rb
是将“自动加载”
core\u ext
目录中每个
*.rb
文件的文件

> 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}" }