web-dev-qa-db-fra.com

aucun fichier de ce type à charger - rubygems (LoadError)

J'ai récemment installé Rails dans Fedora 12. Je suis également nouveau sur Linux. Tout fonctionne bien sous Windows 7. Mais je suis confronté à beaucoup de problèmes sous Linux. Aidez-moi, s'il vous plaît!

A ma connaissance, j'ai installé tous les éléments essentiels pour que le script/serveur de base soit opérationnel. J'ai cette erreur de boot.rb popping up quand j'essaie script/serveur. Certains des détails que je voudrais donner ici:

Les répertoires où Rails, Ruby et gem sont installés,

[vineeth@localhost my_app]$ which Ruby
/usr/local/bin/Ruby

[vineeth@localhost my_app]$ which Rails
/usr/bin/Rails

[vineeth@localhost my_app]$ which gem
/usr/bin/gem

Et quand je lance le script/serveur, c'est l'erreur.

[vineeth@localhost my_app]$ script/server
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError)
 from ./script/../config/boot.rb:9
 from script/server:2:in `require'
 from script/server:2

Et le fichier PATH ressemble à ceci

[vineeth@localhost my_app]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/Ruby:$PATH"

Je suppose que cela a quelque chose à voir avec le fichier PATH. Dites-moi ce que je dois changer ici. S'il y a d'autres changements que je devrais faire, s'il vous plaît faites le moi savoir.

61
Vineeth

J'ai l'impression que vous avez deux versions de Ruby. Veuillez coller le résultat de la commande suivante:

$ which -a Ruby

mise à jour concernant le commentaire:

Nuke une version et n'en laisser qu'une. J'ai eu le même problème avec deux versions cherchant des gemmes à différents endroits. M'avait rendu fou pendant quelques semaines. Mettez une prime ici à SO m'a donné la même réponse que je vous donne. 

Tout ce que je fis, c’est de neutraliser une installation de Ruby et de laisser celle gérable via des ports. Je suggère de faire ceci: 

  1. Supprimez la version de Ruby installée via les ports (yum ou n’importe quel gestionnaire de paquets).
  2. Supprimez la version de Ruby fournie avec le système d’exploitation.
  3. Installer la version Ruby à partir de ports avec un préfixe différent (/usr au lieu de /usr/local
  4. Réinstallez rubygems
102
Eimantas

J'ai eu un problème similaire sur Ubuntu en raison de l'installation de plusieurs copies de Ruby. (1.8 et 1.9.1) Malheureusement, j'ai besoin des deux. La solution consiste à utiliser:

$ Sudo update-alternatives --config Ruby
There are 2 choices for the alternative Ruby (providing /usr/bin/Ruby).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/Ruby1.8     50        auto mode
  1            /usr/bin/Ruby1.8     50        manual mode
  2            /usr/bin/Ruby1.9.1   10        manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/Ruby1.9.1 to provide /usr/bin/Ruby (Ruby) in manual mode.

Après avoir effectué cette offre groupée, vous avez réussi.

25

OK, je suis un Noob Ruby, mais je l’ai corrigé légèrement différemment par rapport aux réponses fournies ici, donc j'espère que cela aidera quelqu'un d’autre (tl; dr: j’ai utilisé RVM pour faire basculer la version du système Ruby sur celle qui est attendue par rubygems). 

Tout d’abord, énumérer tous les rubis mentionnés par Eimantas était un bon point de départ:

> which -a Ruby
/opt/local/bin/Ruby
/Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
/Users/Brian/.rvm/bin/Ruby
/usr/bin/Ruby
/opt/local/bin/Ruby

L'instance Ruby par défaut utilisée par le système semblait être 1.8.7:

> Ruby -v
Ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]

rubygems utilisait la version 1.9.2 gérée par RVM:

> gem env | grep 'Ruby EXECUTABLE'
  - Ruby EXECUTABLE: /Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby

C'était donc le problème. Je n'utilise pas activement Ruby moi-même (il s'agit simplement d'une dépendance d'un script de système de construction que j'essaie d'exécuter), je ne me suis donc pas soucié de savoir quelle version était active à d'autres fins. Comme rubygems s’attendait à la version 1.9.2 déjà gérée par RVM, j’ai simplement utilisé RVM pour faire basculer le système et utiliser la version 1.9.2 par défaut:

> rvm use 1.9.2
Using /Users/Brian/.rvm/gems/Ruby-1.9.2-p290

> Ruby -v
Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]

Après cela, mon problème "aucun fichier de ce type" a disparu et mon script a commencé à fonctionner.

18
Brian Moeskau

Je voudrais juste ajouter que dans mon cas, rubygems n'était pas installé.

Lancer Sudo apt-get install rubygems a résolu le problème!

13
miguelcobain

Essayez de démarrer le projet avec:

./script/server

au lieu de script/server si vous utilisez Ruby 1.9.2 (de étrange incapacité à exiger config/boot après la mise à niveau vers Ruby 1.9.2 )

12
ohho

Si quelqu'un d'autre recherche ce problème dans Google, j'ai pu corriger le mien en trouvant le dossier "rubygems" que je voulais utiliser et en l'ajoutant à ma variable d'environnement $ RUBYLIB.

find / -name "rubygems" -print

Une fois que vous l'avez trouvé, ajoutez le répertoire parent à votre environnement. En bash, comme ça:

export RUBYLIB=/path/to/parent

Maintenant, si vous exécutez gem, il devrait choisir le bon répertoire de bibliothèques, et vous êtes prêt à fonctionner.

11
Andrew Kvochick

J'ai eu un problème similaire et je l'ai résolu en configurant RUBYLIB env.

Dans mon environnement, j'ai utilisé ceci:

export RUBYLIB=$Ruby_dir/lib/Ruby/1.9.1/:$Ruby_dir/lib/Ruby/1.9.1/i686-linux/:$RUBYLIB
6
RobisonSantos

J'ai eu un problème similaire, en exécutant simplement un script Ruby trivial qui demandait simplement la gemme que je voulais ... j'ai reçu ce message d'erreur. Quand j'ai changé l'incantation de:

Ruby test.rb

à

Ruby -rubygems test.rb

Semblait travailler.

6
ftravers
gem install bundler

résolu le problème pour moi.

1
Gagan Gami

Si vous avez plusieurs Ruby installés, il suffit peut-être de supprimer l'un d'entre eux. Sous MacosX avec l'installation de ports supplémentaires, supprimez l'installation des ports avec:

Sudo port -f uninstall Ruby
1
cande

Il s’agit de la première réponse lorsque Google 'require': cannot load such file -- ubygems (LoadError) après Google corrige automatiquement les "ubygems" en "rubygems". Il s’est avéré qu’il s’agissait d’un changement intentionnel entre Ruby 2.4 et 2.5 ( Bug # 14322 ). Les scripts qui détectent le répertoire gems de l'utilisateur sans prendre en compte la version de Ruby échoueront probablement.

Ruby 2.4

Ruby -rubygems -e 'puts Gem.user_dir'

Ruby 2.5

Ruby -rrubygems -e 'puts Gem.user_dir'
1
Nice Guy IT

J'ai également eu ce problème… .. Ma solution est de supprimer le fichier Gemfile.lock et d'installer à nouveau Gems

1
datnt

Le simple fait d'utiliser /bin/bash --login m'a fait l'affaire, bizarrement. Je ne peux pas l'expliquer.

0

J'ai également rencontré le même problème en utilisant rbenv + passagers + nginx. ma solution consiste simplement à ajouter ces 2 lignes de code à votre configuration nginx: 

passenger_default_user root;
passenger_default_group root;

la réponse détaillée est ici: https://stackoverflow.com/a/15777738/445908

0