Here is one more newbie question:
require 'tasks/rails'
I saw this line in Rakefile in the root path of every rails project. I guess this line is used to require vendor/rails/railties/lib/tasks/rails.rb to get all rake tasks loaded:
$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 }
My question is why only ‘tasks/rails’ is specified for the require method, but not the full path of the file?
Thanks in advance.
When you start your rails app it runs config/boot.rb which calls
Rails::Initializer.set_load_pathand thatsets up the$LOAD_PATH.Ruby uses that list of directories to find the files specified on a
requireline. If you give it an absolute path likerequire '/home/lolindrath/ruby/lib.rb'it will skip that search.This is roughly analogous to
#include <stdlib.h>in C/C++ where it searches the include path you give the compiler to find that header file.