Basta fare questo:
require_relative 'tokenizer'
Se lo metti in un file Ruby che si trova nella stessa directory di tokenizer.rb
, funzionerà benissimo indipendentemente dalla directory di lavoro corrente (CWD).
Spiegazione del perché questo è il modo migliore
Le altre risposte sostengono che dovresti usare require './tokenizer'
, ma questa è la risposta sbagliata , perché funzionerà solo se esegui il tuo processo Ruby nella stessa directory in cui si tokenizer.rb
trova. Praticamente l'unica ragione per considerare l'utilizzo require
come quello sarebbe se dovessi supporta Ruby 1.8, che non ha require_relative
.
La require './tokenizer'
risposta potrebbe funzionare per te oggi, ma limita inutilmente i modi in cui puoi eseguire il tuo codice Ruby. Domani, se vuoi spostare i tuoi file in una directory diversa o vuoi semplicemente avviare il tuo processo Ruby da una directory diversa, dovrai ripensare tutte queste require
affermazioni.
Usare require
per accedere ai file che si trovano sul percorso di caricamento è una cosa buona e le gemme di Ruby lo fanno sempre. Ma non dovresti iniziare l'argomento require
con a .
meno che tu non stia facendo qualcosa di molto speciale e sappia cosa stai facendo.
Quando scrivi codice che fa ipotesi sul suo ambiente, dovresti pensare attentamente a quali ipotesi fare. In questo caso, ci sono fino a tre modi diversi per richiedere il tokenizer
file e ognuno fa un'ipotesi diversa:
require_relative 'path/to/tokenizer'
: Presuppone che il percorso relativo tra i due file di origine Ruby rimarrà lo stesso.
require 'path/to/tokenizer'
: Presuppone che path/to/tokenizer
si trovi all'interno di una delle directory nel percorso di caricamento ( $LOAD_PATH
). Questo in genere richiede una configurazione aggiuntiva, poiché è necessario aggiungere qualcosa al percorso di caricamento.
require './path/to/tokenizer'
: Suppone che il percorso relativo dalla directory di lavoro corrente del processo Ruby tokenizer.rb
rimarrà lo stesso.
Penso che per la maggior parte delle persone e della maggior parte delle situazioni, le ipotesi formulate nelle opzioni n. 1 e n. 2 hanno maggiori probabilità di rimanere vere nel tempo.