这里还有一个新手问题:
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/