8
votes

Pourquoi ne peut-je pas nécessiter un fichier dans le répertoire parent de Ruby?

Notez que je n'utilise pas de rails. J'ai une structure de répertoire comme: xxx pré>

base_classes.rb: p> xxx pré>

quand je suis dans ce répertoire racine p>

>> require '../base_classes' #=> true
>> require File.expand_path("../base_classes.rb") #=> true
>> require File.expand_path("../base_classes") #=> true
>> Card.load!
>> NameError: uninitialized constant Card


0 commentaires

4 Réponses :


6
votes

exiger est basé sur le fichier qui est appelé, ce qui signifie généralement config.ru . Vous avez besoin de exiger_relative (qui est basé sur le fichier actuel) ou un chemin absolu.


2 commentaires

L'inclusion avec WREST_PATH devrait-il alors? Cela crée un chemin absolu.


Cela devrait, mais ... Qu'est-ce que le rendement requis_relatif?



4
votes

Cela peut jouer une pièce, selon la version de Ruby que vous utilisez.
répertoire actuel supprimé de Chemin de charge pour Ruby 1.9.2

Je soupçonne que votre problème est cette ligne: nécessite '../ base_classes' en foo / .
Essayez exiger_relative '../ base_classes' à la place et voyez ce qui se passe.

Cela vous assume sont en utilisant Ruby 1.9.2. Sinon, peut avoir besoin de creuser plus profondément. Vous devez marquer la question ou mentionner en elle (ou les deux, de préférence) quelle version de Ruby vous utilisez.


0 commentaires

0
votes

Le problème était en réalité à l'intérieur de base_classes.rb, j'ai besoin de demander les fichiers tels que:

Dir.glob(File.join(File.dirname(__FILE__), 'base_classes/config/constants', "*.rb")) { |file| require file}
Dir.glob(File.join(File.dirname(__FILE__), 'base_classes', "*.rb")){ |file| require file}


0 commentaires

1
votes

Tout ce qui était nécessaire était d'utiliser un seul point au lieu de deux points.

basé sur l'exemple de code donné: xxx


0 commentaires