Domanda

Ecco un'altra domanda per principianti:

require 'tasks/rails'

Ho visto questa linea in Rakefile nel percorso principale di ogni progetto di rotaie. Immagino che questa riga sia utilizzata per richiedere il fornitore / rails / railties / lib / task / rails.rb per caricare tutte le attività di 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 }

La mia domanda è: perché è stato specificato solo 'task / rails' per il metodo request, ma non il percorso completo del file?

Grazie in anticipo.

È stato utile?

Soluzione

Quando avvii l'app rails, viene eseguito config / boot.rb che chiama Rails::Initializer.set_load_path e ripristina $LOAD_PATH.

Ruby usa quell'elenco di directory per trovare i file specificati su una require riga. Se gli dai un percorso assoluto come require '/home/lolindrath/ruby/lib.rb' salterà quella ricerca.

Questo è approssimativamente analogo a #include <stdlib.h> in C / C ++ dove cerca il percorso di inclusione che dai al compilatore per trovare quel file di intestazione.

Altri suggerimenti

Credo che i tuoi percorsi siano impostati nel tuo file /config/environment.rb:

require File.join(File.dirname(__FILE__), 'boot')

Certo. In /config/boot.rb (chiamato in environment.rb) RAILS_ROOT è impostato come segue:

RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)

Che ti permette di richiedere cose dalla radice, credo. Spero che sia la risposta comunque!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top