Frage

Hier ist eine weitere newbie Frage:

require 'tasks/rails'

sah ich diese Zeile in Rakefile im Wurzelpfad jedes Schienen-Projekt. Ich denke, diese Linie verwendet wird, Verkäufer / Schienen / railties / lib / Aufgaben / rails.rb zu verlangen, dass alle Rake Aufgaben zu erhalten geladen:

$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 }

Meine Frage ist, warum nur die Aufgaben / Schienen "für die erfordern Verfahren angegeben werden, aber nicht der vollständige Pfad der Datei?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Wenn Sie Ihre Rails-Anwendung starten Sie es läuft config / boot.rb die Anrufe Rails::Initializer.set_load_path und thatsets bis die $LOAD_PATH.

Rubin verwendet diese Liste der Verzeichnisse, die Dateien auf einem require Zeile angegeben zu finden. Wenn Sie es einen absoluten Pfad wie require '/home/lolindrath/ruby/lib.rb' geben wird, dass die Suche überspringen.

Das in etwa analog ist in C / C ++ #include <stdlib.h> wo es der Weg Sie den Compiler enthalten sucht geben, dass die Header-Datei zu finden.

Andere Tipps

Ich glaube, da die Pfade in Ihrer /config/environment.rb Datei eingerichtet sind:

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

Klar. In /config/boot.rb (genannt in environment.rb) die RAILS_ROOT eingerichtet ist wie so:

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

Welche können Sie Dinge von der Wurzel verlangen, glaube ich. Hoffe, das ist die Antwort auf jeden Fall!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top