2013-04-19 8 views
17

Ich habe hier einige Probleme. Ich arbeite mit einem Rails 2.3 Projekt (arbeite auf dem Produktionsserver durch ssh - frag nicht warum). Hier ist die Gemfile. Wenn delayed_jobs versucht zu starten, sagt die Ausgabe, dass ich den Bundler-Edelstein installieren muss. Das Problem ist, dass das Gemdir /var/lib/gems/1.8/ ist und ich nicht die Schreibrechte für dieses Verzeichnis habe. Allerdings gibt es ein Verzeichnis unter ~/projects/shared/gems/ruby ​​/ 1.8/edges, wo ich schreiben kann.Geben Sie das Installationsverzeichnis des Schmuckstücks an

Wie kann ich den Installationspfad für ein Juwel definieren?

+0

nicht sicher, was Sie wollen, aber wenn ich Frage richtig verstanden habe, können Sie Bündel installieren --path Ihr_Pfad_hier –

+0

Das Problem ist, den Bundler selbst zu installieren. Es ist erforderlich, damit die App funktioniert, ist aber nicht installiert. – Almaron

+0

oh ich sehe, krank lass dich wissen, wenn ich einen Weg finden –

Antwort

10

Sie Folgendes zu Ihrer config.ru Datei würde hinzufügen können:

ENV['GEM_HOME']="#{ENV['HOME']}/projects/shared/gems/ruby/1.8/gems" 
ENV['GEM_PATH']="#{ENV['GEM_HOME']}:/var/lib/ruby/gems/1.8" 
require 'rubygems' 
Gem.clear_paths 

Dieser Wille Sagen Sie Ihrer Rack-App, wo Sie nachsehen können R Edelsteine.

konfigurieren Auch der Server Bashrc:

export GEM_HOME="$HOME/projects/shared/gems/ruby/1.8/gems" 
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8" 
+2

Wtf ist eine ** config.ru ** Datei? .. – ulidtko

+0

config.ru ist eine Rack-Konfigurationsdatei in Ihrer App – dpaluy

+4

Ich habe keine. Ich habe auch keine App. Ich versuche, das Tool eines anderen in Ruby zu installieren, und es erfordert bestimmte Edelsteine. Es ist mir unangenehm, 'sudo'' gem install' zu haben, und deshalb suche ich hier nach einer Möglichkeit, den Edelsteinpfad fein abzustimmen. Deine Antwort gibt mir nicht, wonach ich suche. – ulidtko

12

Die Umgebungsvariable GEM_HOME definiert den Edelstein-Installationsort. Sie müssen es auf den gewünschten Ort einstellen. Der Befehl ist Betriebssystemspezifisch.

In Windows ist es set

set GEM_HOME=[path]/projects/shared/gems/ruby/1.8/gems 

Linux export

export GEM_HOME=~/projects/shared/gems/ruby/1.8/gems 
+0

Habe das und habe Juwel installieren, um erfolgreich zu sein. Aber der Befehl gem list zeigt immer noch nicht an, dass es installiert ist, und wenn ich versuche, den Befehl bundle zu verwenden, muss ich den Edelstein installieren. rvm-gempath-Ausgabe zeigt den Pfad der geteilten Edelsteine ​​korrekt an. – Almaron

+0

@Almaron versuchen, 'Gem Install Bundler' zu installieren Bundler Gem an diesem Ort zu installieren und aktivieren Sie die Verwendung von 'Bundle' Befehle – IKA

+0

Ich lief 'Gem Install Bundler' und es hieß, dass Edelstein wurde erfolgreich installiert.Aber wenn ich versuche, 'Gem List' auszuführen, wird das installierte Juwel nicht angezeigt. Auch der Befehl bundle funktioniert nicht. – Almaron

1

können Sie auch festlegen nur ein Bündel Installationspfad ein Bündler Konfigurationsdatei. Ich schrieb eine post, die Sie überprüfen können, wenn Sie es hilfreich finden würden.

13

Um foo Juwel in einen bestimmten Ordner zu installieren, verwenden nur --install-dir Option, das heißt

$ gem install --install-dir /path/to/gems/folder foo 

Es hilft, wenn:

  • man nicht bundle install verwenden - zum Beispiel wenn man will Bündel Juwel selbst installieren möchte oder einen Edelstein installieren in den Bündel Ordner
  • sudo gem install Befehl Mangel an Schreibberechtigungen aufgrund fehlschlägt für einen Standardinstallationspfad (die nicht in Gemfile aufgeführt wird)

Hoffe, dass hilft.

Verwandte Themen