Ich bin durch die Code-Basis der Homebrew-Repo zu lesen, insbesondere die Datei hier:Wie kann ich feststellen, welche Datei hier benötigt wird?
Ich sehe viele ‚require‘ Aussagen in der gesamten Datei verstreut, zum Beispiel auf der Leitung 104 (require 'tap'
). Das Problem ist, dass ich sehe, 3 Dateien tap.rb
in der Code-Basis genannt:
Library/Homebrew/tap.rb
Library/Homebrew/cmd/tap.rb
Library/Homebrew/compat/tap.rb
Weiter unten im Code I Tap.fetch...
und in Library/Homebrew/tap.rb
sehen, welche eine Klasse Tap
mit einer Klassenmethode namens enthält benannt fetch
, also bin ich zuversichtlich, dass dies die richtige Datei ist, die enthalten ist. Denkbar wäre aber, dass es Dutzende von Dateien mit demselben Dateinamen geben könnte, und mehr als eine davon könnte identische Klassenmethoden haben. Meine Frage ist, gibt es eine Möglichkeit zu sagen, welche Tap-Klasse geladen wird, ohne durch jede der Dateien zu schauen?
UPDATE: Ich denke, ich habe die Antwort auf meine Frage (siehe unten).
https://github.com/ericmathison/articles/blob/master/understaning-require-in-ruby.md
Im Grunde funktioniert es, indem man die Ruby-$LOAD_PATH
Methode, ähnlich wie UNIX verwendet das $ PATH-Variable für binäre aussehen:
Die Datei geladen ist 'Library/Homebrew/tap.rb'. 'Library/Homebrew/cmd/tap.rb' enthält den Code, der den Befehl' brew tap' behandelt. Es wird explizit in [Zeile 61] (https://github.com/Homebrew/brew/blob/8518ffdee19c0c985e8631e836b78624e4926c7f/Library/Homebrew/brew.rb#L61) geladen, wenn "tap" der Homebrew-Befehl in der Befehlszeile ist ('Brühen tippen ...'). – axiac