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.
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:
/usr
statt /usr/local
). rubygems
neu installierenIch 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.
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.
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!
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
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.
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
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.
gem install bundler
behebte das Problem für mich.
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
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'
Ich hatte auch dieses Problem ... Meine Lösung ist, die Datei Gemfile.lock zu entfernen und die Gems erneut zu installieren: Bundle-Installation
Einfach /bin/bash --login
laufen zu lassen, hat den Trick für mich komisch gemacht. Kann es nicht erklären.
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