ruby-on-rails - Ruby 如何知道在哪里可以找到所需的文件?

标签 ruby-on-rails ruby require

这里还有一个新手问题:

require 'tasks/rails'

我在每个 Rails 项目的根路径中的 Rakefile 中看到了这一行。我猜这行用于要求 vendor/rails/railties/lib/tasks/rails.rb 加载所有 rake 任务:

$VERBOSE = nil
# Load Rails rakefile extensions
Dir["#{File.dirname(__FILE__)}/*.rake"].each { |ext| load ext }
# Load any custom rakefile extensions
Dir["#{RAILS_ROOT}/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
Dir["#{RAILS_ROOT}/vendor/plugins/*/**/tasks/**/*.rake"].sort.each { |ext| load ext }

我的问题是为什么只为 require 方法指定了'tasks/rails',而不是文件的完整路径?

提前致谢。

最佳答案

当您启动 Rails 应用程序时,它会运行 config/boot.rb 调用 Rails::Initializer.set_load_path 这设置了$LOAD_PATH .

Ruby 使用该目录列表来查找在 require 上指定的文件线。如果你给它一个像require '/home/lolindrath/ruby/lib.rb'这样的绝对路径它将跳过该搜索。

这大致类似于 #include <stdlib.h>在 C/C++ 中,它会搜索您为编译器提供的包含路径以查找该头文件。

关于ruby-on-rails - Ruby 如何知道在哪里可以找到所需的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417179/

相关文章:

ruby-on-rails - 在ruby中排序数字字符串

ruby - 无法安装 bson_ext 1.8.2 gem

node.js - npm 依赖项是否需要其父包中的模块

node.js - 在 JSHint 中禁用关于 "require"函数的警告

php - 如何在php中将require语句的输出转换为字符串

ruby-on-rails - 如何在没有数据库的情况下使用 Rails/Devise?

ruby-on-rails - Paypal预授权+自适应支付

ruby-on-rails - 使用 block 级标签和输入的 Twitter Bootstrap

ruby-on-rails - Rails 在创建应用程序时不遵守指定的版本

html - 有没有办法在 Rails 上混合纯文本和 HTML 电子邮件?