Ich setze die Rails 4-Anwendung mit Ruby 2.0, erhalte jedoch die Meldung "Webanwendung konnte nicht gestartet werden" und erhalte die folgende Ablaufverfolgung:
cannot load such file -- bundler/setup (LoadError)
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'
Meine apache2.conf ist:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/bin/ruby
bundle -v
ist:
Bundler version 1.3.5
ruby -v
ist:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
gem env
ist:
RubyGems Environment:
- RUBYGEMS VERSION: 2.1.5
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /root/.gems/bin
- /usr/lib/ruby/gems/1.8/bin/
- /usr/local/bin
- /usr/bin
- /bin
- /usr/bin/X11
- /usr/games
- /usr/sbin
- /sbin
echo $GEM_PATH
ist:
/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8
Sollte nicht GEM_PATH
sein /usr/lib/ruby/gems/2.0
?
Innerhalb des virtuellen Hosts in apache2.conf habe ich hinzugefügt:
SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
Und jetzt funktioniert es.
Ist es der richtige Weg, dies zu beheben?
quelle
sudo
eigentlich nötig? Ich habe es benutzt,sudo
aber jetzt frage ich mich, was passiert wäre, wenn ich es nicht getan hätte.sudo
!sudo gem ....
installiert diedefault
Version dessudo
Gems und kann (in meinem Fall Ubuntu 14.04) rvm nicht ausführen.sudo
für das System Standard-Ruby, aber für keine Version von Ruby, die ich mit rvm installiert hatte.gem 2.7.6
undruby 2.5.0p0
was zu tun ist?Sie haben höchstwahrscheinlich mehr als einen Ruby installiert.
Wenn Sie RVM verwenden, müssen Sie wahrscheinlich Folgendes ausführen:
um die zu verwendende Version von Ruby einzustellen.
Siehe http://rvm.io/rubies/default
teilt Ihnen die Version mit, die Sie gerade verwenden.
quelle
Sie können versuchen zu laufen:
Wie @Dinesh in Rails 5 erwähnt:
quelle
In meinem Fall lauteten die Zeilen, die nach der Installation von Passenger an die Apache-Konfigurationsdatei angehängt wurden, wie folgt:
Da für die App Ruby 2.0.0 erforderlich ist, habe ich eine Weile gebraucht, aber schließlich wurde der Fehler behoben, nachdem in der Konfigurationsdatei des virtuellen Apache-Hosts für die App ein anderer Pfad mit 'PassengerRuby' angegeben wurde:
quelle
PassengerDefaultRuby
bezog sich auf eine alte Installation von Rubin.Ich habe diesen Fehler in einer neuen Rails-App mit korrekt installiertem Bundle erhalten. Das Problem wurde behoben, indem das Frühlingsjuwel in Gemfile auskommentiert wurde.
quelle
gem install spring
anstatt es zu kommentieren.Ich bin auf dasselbe Problem gestoßen, aber ich denke, es lag am
spring
Zwischenspeichern einiger Edelsteine und Konfigurationen. Ich habe es durch Laufen behobengem pristine --all
.Dadurch werden installierte Gems aus Dateien im Gem-Cache in den ursprünglichen Zustand versetzt.
oder Sie können einfach versuchen, für Ihren Edelstein wie
quelle
Dies geschah für mich in der Produktionsumgebung.
rm /vendor/bundle
dann
bundle install --deployment
Das Problem wurde behoben.
quelle
Andere mögliche Situation: In Ihrer Serverumgebung sind mehrere Benutzer definiert. In diesem Fall läuft
gibt Ihnen den erforderlichen Befehl, um Ihre
nginx/sites-enabled/relevant_application
Datei mit Ihrem Anwendungsfall anzugeben , Beispiel:quelle
Ich hatte das gleiche Problem und versuchte alle Antworten ohne Glück.
Schritte, die ich getan habe, um zu reproduzieren:
rvm instal 2.1.10
rvm gemset create my_gemset
rvm use 2.1.10@my_gemset
bundle install
Allerdings
bundle install
Rails installiert, aber ich habe immer nochcannot load such file -- bundler/setup (LoadError)
endlich laufen
gem install rails -v 4.2
behobenquelle
Die Bundler-Version kann das Problem verursachen.
Bitte installieren Sie den Bundler mit einer anderen Versionsnummer.
Beispielsweise,
gem install bundler -v 1.0.10
quelle
gem uninstall -a bundler; gem install bundler -v '<2.0'
.Ich hatte das, weil etwas Schlimmes in meinem war
vendor/bundle
. Nichts mit Apache zu tun, nur in der lokalen Entwicklerumgebung.Um dies zu beheben, habe ich
vendor\bundle
den Verweis darauf gelöscht und auch in meinem gelöscht ,.bundle/config
damit er nicht wiederverwendet wird.Dann habe ich wieder gebündelt (die dann installiert
GEM_HOME
stattvendor/bundle
und das Problem ging weg.quelle
HINWEIS: Mein Hosting-Unternehmen ist Site5.com und ich habe einen verwalteten VPS.
Ich habe der .htaccess-Datei in meinem Verzeichnis public_html env-Variablen für GEM_HOME und GEM_PATH hinzugefügt (ein Alias für das öffentliche Verzeichnis in der Rails-App).
Sie wurden vorher nicht benötigt, also muss sich auf der Seite des Gastgebers etwas geändert haben. Dieser Fehler trat auf, nachdem die Datei restart.txt berührt wurde, um den Passagierserver neu zu starten.
Erhielt GEM_PATH von:
echo $ GEM_PATH
Erhielt das GEM_HOME von:
Edelstein env
Die .htaccess-Datei wurde mit den folgenden Zeilen aktualisiert:
quelle
Für mich bestand das Problem darin, RVM Ruby mit Passenger in Verbindung zu bringen. Also musste ich RVM Ruby Wrapper in die Passagierkonfigurationsdatei integrieren.
Ich finde rvm Ruby Wrapper Pfad mit Befehl heraus:
Ich nahm den Pfad aus dem Ergebnis und gab eine Passagierkonfiguration ein in
nginx/passenger.conf
:quelle
Ich habe dieses Problem behoben, indem ich ein Testschienenprojekt erstellt und alle Edelsteine installiert habe. Dann habe ich mein aktuelles Gemfile.lock durch den Test ersetzt und alles funktioniert einwandfrei.
Ich denke, dass dieses Problem von
bundler
Versionen mit Hosting stammt. Stellen Sie daher sicher, dass der Hosting-Bundler dieselbe Version wie Ihr Projekt hat.quelle
In meiner Situation war es eine Frage der Berechtigungen:
quelle
Die Version der Ruby-Version, für die Phusion Passenger verwendet wurde, unterscheidet sich von Ihrer Rails-App.
Stellen Sie sicher, dass die Version in httpd config mit der Rails-App identisch ist.
quelle