Faites juste ceci:
require_relative 'tokenizer'
Si vous mettez cela dans un fichier Ruby qui se trouve dans le même répertoire que tokenizer.rb
, cela fonctionnera correctement quel que soit votre répertoire de travail actuel (CWD).
Explication des raisons pour lesquelles c'est le meilleur moyen
Les autres réponses prétendent que vous devriez utiliser require './tokenizer'
, mais ce n'est pas la bonne réponse, car cela ne fonctionnera que si vous exécutez votre processus Ruby dans le même répertoire que celui tokenizer.rb
dans lequel il se trouve. La seule raison d'envisager une require
telle utilisation serait prend en charge Ruby 1.8, qui n'a pas require_relative
.
La require './tokenizer'
réponse peut fonctionner pour vous aujourd'hui, mais elle limite inutilement la manière dont vous pouvez exécuter votre code Ruby. Demain, si vous souhaitez déplacer vos fichiers vers un répertoire différent, ou si vous souhaitez simplement démarrer votre processus Ruby à partir d'un répertoire différent, vous devrez repenser toutes ces require
instructions.
Utiliser require
pour accéder aux fichiers qui se trouvent sur le chemin de chargement est une bonne chose et les gemmes Ruby le font tout le temps. Mais vous ne devriez pas commencer l'argument require
avec un à .
moins que vous ne fassiez quelque chose de très spécial et que vous sachiez ce que vous faites.
Lorsque vous écrivez du code qui émet des hypothèses sur son environnement, vous devez réfléchir attentivement aux hypothèses à faire. Dans ce cas, il existe jusqu'à trois façons différentes d'exiger le tokenizer
fichier, et chacune fait une hypothèse différente:
require_relative 'path/to/tokenizer'
: Suppose que le chemin relatif entre les deux fichiers source Ruby restera le même.
require 'path/to/tokenizer'
: Suppose qu'il se path/to/tokenizer
trouve dans l'un des répertoires sur le chemin de chargement ( $LOAD_PATH
). Cela nécessite généralement une configuration supplémentaire, car vous devez ajouter quelque chose au chemin de chargement.
require './path/to/tokenizer'
: Suppose que le chemin d'accès relatif depuis le répertoire de travail actuel du processus Ruby tokenizer.rb
vers restera le même.
Je pense que pour la plupart des gens et la plupart des situations, les hypothèses formulées dans les options 1 et 2 sont plus susceptibles de se confirmer avec le temps.