2010-10-23 5 views
0

Chaque fois que je besoin d'un fichier en rubis ou irb je reçois cette erreur:Ruby Erreur étrange

LoadError: no such file to load -- (insert any filename).rb 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from <internal:lib/rubygems/custom_require>:29:in `require' 
    from (irb):1 
    from /usr/bin/irb1.9.1:12:in `<main>' 

Il arrive même si le fichier existe J'utilise ruby1.9.1 et à ma connaissance, je ne l'ai pas installé rubygems. Je cours sur Ubuntu 10.10 Maverick Meerkat. S'il vous plaît aider, ce problème est très ennuyeux! Merci d'avance, ell.

EDIT: J'ai oublié de dire que peu importe où le fichier est, même si c'est dans le même répertoire et qu'il existe vraiment, j'ai toujours cette erreur.

+0

D'où le fichier existe-t-il? – sepp2k

+0

Mon dossier? il existe dans: home/elliot/programmation/projets Ruby/Graph Data Structure/Graph.rb – Ell

+0

@Eli: Non, je voulais dire ho.rb – sepp2k

Répondre

1

Rubygems est installé avec ruby ​​1.9 par défaut.

Vérifiez que le fichier que vous essayez de charger se trouve dans un répertoire répertorié dans la variable $: ou spécifiez le chemin complet du fichier dans require. Ou, ajoutez le répertoire à $: explicitement:

$: << '/my/lib/path' 
require 'mylib' 
+0

Merci, cela a résolu le problème. Désolé d'être un Noob, je viens juste de passer à Ubuntu à partir de Windows XP et il faut un peu de temps pour s'y habituer, surtout le système d'installation de paquets! – Ell

4

Dans Ruby 1.9.2, qui je pense est la version que vous utilisez, le répertoire courant n'est plus dans le $LOAD_PATH. Si vous voulez require fichiers relatifs au chemin du fichier dans lequel se trouve l'appel require, vous devez utiliser require_relative à la place.

Si vous vraiment voulez require fichiers par rapport au répertoire courant, vous pouvez ajouter le répertoire courant à la $LOAD_PATH comme ceci:

$LOAD_PATH << '.' 

Cependant, ce changement a été fait pour une raison, donc vous ne devriez pas le faire à la légère. Après tout, cela rendra votre application plus ou moins aléatoire, selon le répertoire dans lequel vous vous trouvez, lorsque vous avez démarré l'application. Pire, un attaquant peut vous obliger à exécuter du code arbitraire en son nom s'il peut vous aider à exécuter l'application à partir d'un répertoire sous son contrôle.

0

Utilisez-vous p0? Je l'ai eu un lot sur ruby-1.9.2-p0. Essayez de faire un dissociées (par exemple, pas en utilisant --with-baseruby) ./configure ensemble, autrement dit

curl ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz | tar xz 
cd ruby-1.9.2-p136 
./configure 
make -j2 
sudo make install 

depuis le début. Pour moi, cela fixé syck ne pas être là (même si un problème différent sauter :/), yaml, même stringio et zlib!