这是一个新手问题:
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
C/C++,它搜索您给编译器找到该头文件的include路径.