it-swarm.com.de

keine solche Datei zum Laden - rubygems (LoadError)

Ich habe Rails kürzlich in Fedora 12 installiert. Ich bin auch neu in Linux. Unter Windows 7 funktioniert alles einwandfrei. In Linux gibt es jedoch viele Probleme. Hilfe bitte!

Ich habe alle wesentlichen Grundlagen meines Wissens installiert, um das grundlegende Skript/den Server zum Laufen zu bringen. Ich habe diesen Fehler von boot.rb beim Auftauchen von Skript/Server. Einige Details möchte ich hier nennen:

Die Verzeichnisse, in denen Rails, Ruby und Gem installiert sind,

[[email protected] my_app]$ which Ruby
/usr/local/bin/Ruby

[[email protected] my_app]$ which Rails
/usr/bin/Rails

[[email protected] my_app]$ which gem
/usr/bin/gem

Und wenn ich das Skript/den Server starte, ist dies der Fehler.

[[email protected] 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

Und die PATH-Datei sieht so aus

[[email protected] 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"

Ich nehme an, es hat etwas mit der PATH-Datei zu tun. Lassen Sie mich wissen, was ich hier ändern muss. Wenn es andere Änderungen gibt, die ich vornehmen sollte, lass es mich wissen.

61
Vineeth

Ich habe die Vermutung, dass Sie zwei Ruby-Versionen haben. Bitte fügen Sie die Ausgabe des folgenden Befehls ein:

$ which -a Ruby

bezüglich des Kommentars aktualisiert:

Nuke eine Version und lass nur eine. Ich hatte das gleiche Problem mit zwei Versionen, die an verschiedenen Orten nach Edelsteinen suchten. Hatte mich ein paar Wochen verrückt gemacht? Gib hier bei SO eine Prämie ab, die mir dieselbe Antwort gibt, die ich dir gebe. 

Alles, was ich tat, war eine nuke one Installation von Ruby und ließ die eine über Ports handhabbar. Ich würde vorschlagen, dies zu tun: 

  1. Entfernen Sie die über Ports installierte Ruby-Version (yum oder einen anderen Paket-Manager).
  2. Entfernen Sie die mit dem Betriebssystem gelieferte Ruby-Version (Hardcore-RM von Hand).
  3. Installieren Sie die Ruby-Version von den Ports mit einem anderen Präfix (/usr statt /usr/local). 
  4. rubygems neu installieren
102
Eimantas

Ich hatte unter Ubuntu ein ähnliches Problem, da mehrere Ruby-Kopien installiert waren. (1.8 und 1.9.1) Leider brauche ich beide. Die Lösung ist zu verwenden:

$ 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.

Nach dieser Installation des Pakets war die Installation erfolgreich.

25

OK, ich bin ein Ruby-Noob, aber ich habe dieses Problem etwas anders behoben als die Antworten hier. Hoffentlich hilft das jemand anderen (tl; dr: Ich habe RVM verwendet, um die System-Ruby-Version auf die gleiche Version umzustellen, die von Rubygems erwartet wird). 

Zunächst einmal, alle Rubine aufzuführen, wie von Eimantas erwähnt, war ein guter Ausgangspunkt:

> 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

Die vom System verwendete Standard-Ruby-Instanz schien 1.8.7 zu sein:

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

während die von Rubygems verwendete Version die von RVM verwaltete Version 1.9.2 war:

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

Das war also definitiv das Problem. Ich benutze Ruby nicht selbst aktiv (dies ist lediglich eine Abhängigkeit eines Build-Systemskripts, das ich ausführen möchte). Daher war es mir egal, welche Version für andere Zwecke aktiv war. Da rubygems den 1.9.2 erwartet hatte, der bereits von RVM verwaltet wurde, habe ich einfach RVM verwendet, um das System auf die 1.9.2-Version als Standard umzustellen:

> 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]

Nachdem dies erledigt war, ging mein Problem "keine solche Datei" weg und mein Skript funktionierte.

18
Brian Moeskau

Ich möchte nur hinzufügen, dass rubygems in meinem Fall nicht installiert wurde.

Das Ausführen von Sudo apt-get install rubygems hat das Problem gelöst!

13
miguelcobain

Starten Sie das Projekt mit:

./script/server

anstelle von script/server, wenn Sie Ruby 1.9.2 verwenden (von seltsame Unfähigkeit, nach dem Upgrade auf Ruby 1.9.2 config/boot zu erfordern

12
ohho

Für den Fall, dass jemand anderes dieses Problem googelt: Ich konnte mein Problem beheben, indem ich den schwer fassbaren "rubygems" -Ordner fand, den ich verwenden wollte, und ihn meiner Umgebungsvariable "$ RUBYLIB" hinzufügen würde.

find / -name "rubygems" -print

Sobald Sie es gefunden haben, fügen Sie das übergeordnete Verzeichnis Ihrer Umgebung hinzu. In Bash wie folgt:

export RUBYLIB=/path/to/parent

Wenn Sie gem ausführen, sollte es jetzt das richtige Bibliotheksverzeichnis aufnehmen, und Sie können loslegen.

11
Andrew Kvochick

Ich hatte ein ähnliches Problem und löste dieses Problem durch die Einrichtung von RUBYLIB env.

In meiner Umgebung habe ich Folgendes verwendet:

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

Ich hatte ein ähnliches Problem, indem ich einfach ein triviales Ruby-Skript ausführte, das gerade den Edelstein benötigte, den ich wollte ... bekam diese Fehlermeldung. Wenn ich die Beschwörung geändert habe von:

Ruby test.rb

zu

Ruby -rubygems test.rb

Schien zu arbeiten.

6
ftravers
gem install bundler

behebte das Problem für mich.

1
Gagan Gami

Wenn Sie mehrere Ruby-Programme installiert haben, reicht es möglicherweise aus, nur eines davon zu entfernen. Entfernen Sie auf MacosX mit zusätzlichen installierten Ports die Ruby-Installationsanschlüsse mit:

Sudo port -f uninstall Ruby
1
cande

Dies ist die erste Antwort beim Googeln von 'require': cannot load such file -- ubygems (LoadError), nachdem Google "ubygems" zu "rubygems" automatisch korrigiert hat. Es stellte sich heraus, dass dies eine absichtliche Änderung zwischen Ruby 2.4 und 2.5 war ( Bug # 14322 ). Skripte, die das Benutzer-Gems-Verzeichnis erkennen, ohne die Ruby-Version zu berücksichtigen, schlagen höchstwahrscheinlich fehl.

Rubin 2.4

Ruby -rubygems -e 'puts Gem.user_dir'

Ruby 2,5

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

Ich hatte auch dieses Problem ... Meine Lösung ist, die Datei Gemfile.lock zu entfernen und die Gems erneut zu installieren: Bundle-Installation

1
datnt

Einfach /bin/bash --login laufen zu lassen, hat den Trick für mich komisch gemacht. Kann es nicht erklären.

0

Das gleiche Problem habe ich auch mit rbenv + passenger + nginx getroffen. Meine Lösung besteht einfach darin, diese 2 Codezeilen zu Ihrer Nginx-Konfiguration hinzuzufügen: 

passenger_default_user root;
passenger_default_group root;

die detaillierte Antwort ist hier: https://stackoverflow.com/a/15777738/445908